Datenzugriffs-APIs wie ODBC, OLE-DB und SqlClient rufen die (interne) gespeicherte Prozedur sp_reset_connection auf, wenn eine Verbindung aus einem Verbindungspool wiederverwendet wird. Damit wird der Status der Verbindung zurückgesetzt, bevor sie wiederverwendet wird.
Es scheint keine offizielle Dokumentation darüber zu geben, welche Dinge zurückgesetzt werden, aber hier ist eine inoffizielle Liste.
sp_reset_connection setzt die folgenden Aspekte einer Verbindung zurück:
- Es setzt alle Fehlerzustände und -nummern zurück (wie @@error)
- Er stoppt alle ECs (Ausführungskontexte), die Child-Threads eines übergeordneten EC sind, die eine parallele Abfrage ausführen
- Er wartet auf ausstehende E/A-Operationen, die noch nicht abgeschlossen sind.
- Es gibt alle gehaltenen Puffer auf dem Server durch die Verbindung frei
- Sie schaltet alle Pufferressourcen frei, die von der Verbindung verwendet werden.
- Er gibt den gesamten Speicher frei, der der Verbindung zugeordnet ist
- Er löscht alle Arbeits- oder temporären Tabellen, die von der Verbindung
- Es werden alle globalen Cursor, die der Verbindung gehören, gelöscht
- Es schließt alle offenen SQL-XML-Handles, die geöffnet sind
- Es werden alle offenen SQL-XML-bezogenen Arbeitstabellen gelöscht
- Es werden alle Systemtabellen geschlossen
- Es werden alle Benutzertabellen geschlossen
- Es werden alle temporären Objekte gelöscht
- Offene Transaktionen werden abgebrochen
- Er wird von einer verteilten Transaktion abweichen, wenn er eingetragen wird.
- Es wird die Anzahl der Verweise auf die Benutzer in der aktuellen Datenbank verringert; die gemeinsame Datenbanksperre wird freigegeben
- Es wird erworbene Schlösser freigeben
- Es gibt alle Griffe frei, die möglicherweise erworben wurden
- Es werden alle SET-Optionen auf die Standardwerte zurückgesetzt
- Es setzt den Wert @@rowcount zurück
- Es setzt den @@Identitätswert zurück
- Es setzt alle Trace-Optionen auf Sitzungsebene mit dbcc traceon() zurück.
sp_reset_connection wird NICHT zurückgesetzt:
- Sicherheitskontext, weshalb das Pooling von Verbindungen die Verbindungen abgleicht auf der Grundlage der genauen Verbindungszeichenfolge
- Wenn Sie eine Anwendungsrolle mit sp_setapprole eingegeben haben, da die Anwendung Rollen nicht rückgängig gemacht werden können
- Der Isolationsgrad der Transaktion