Come hanno detto le altre risposte, sp_reset_connection
indica che il pool di connessioni viene riutilizzato. Sii consapevole di una particolare conseguenza!
Blog MSDN di Jimmy Mays ha detto:
sp_reset_connection NON ripristina il livello di isolamento della transazione al valore predefinito del server dall'impostazione della connessione precedente.
AGGIORNAMENTO :a partire da SQL 2014, per i driver client con TDS versione 7.3 o successiva, i livelli di isolamento delle transazioni verranno reimpostati sui valori predefiniti.
rif:SQL Server:perdite di livello di isolamento nelle connessioni in pool
Ecco alcune informazioni aggiuntive:
Cosa fa sp_reset_connection?
I livelli dell'API di accesso ai dati come ODBC, OLE-DB e System.Data.SqlClient richiamano tutti le stored procedure (interne) p_reset_connection quando si riutilizza una connessione da un pool di connessioni. Lo fa per ripristinare lo stato della connessione prima che venga riutilizzato, tuttavia da nessuna parte è documentato ciò che viene ripristinato. Questo articolo cerca di documentare le parti della connessione che vengono ripristinate.
sp_reset_connection reimposta i seguenti aspetti di una connessione:
-
Tutti gli stati e i numeri di errore (come @@errore)
-
Arresta tutti gli EC (contesti di esecuzione) che sono thread figli di un EC genitore che esegue una query parallela
-
Attende eventuali operazioni di I/O in sospeso in sospeso
-
Libera tutti i buffer trattenuti sul server dalla connessione
-
Sblocca tutte le risorse buffer utilizzate dalla connessione
-
Rilascia tutta la memoria allocata di proprietà della connessione
-
Cancella qualsiasi lavoro o tabella temporanea creata dalla connessione
-
Elimina tutti i cursori globali di proprietà della connessione
-
Chiude tutti gli handle SQL-XML aperti che sono aperti
-
Elimina tutte le tabelle di lavoro relative a SQL-XML aperte
-
Chiude tutte le tabelle di sistema
-
Chiude tutte le tabelle utente
-
Elimina tutti gli oggetti temporanei
-
Annulla le transazioni aperte
-
Difetti da una transazione distribuita al momento dell'arruolamento
-
Decrementa il conteggio dei riferimenti per gli utenti nel database corrente che rilascia i blocchi del database condiviso
-
Libera i blocchi acquisiti
-
Rilascia tutte le maniglie acquisite
-
Ripristina tutte le opzioni SET ai valori predefiniti
-
Reimposta il valore @@rowcount
-
Reimposta il valore @@identity
-
Reimposta qualsiasi opzione trace a livello di sessione utilizzando dbcc traceon()
-
Reimposta CONTEXT_INFO su
NULL
in SQL Server 2005 e versioni successive [ non fa parte dell'articolo originale ]
sp_reset_connection NON verrà ripristinato:
-
Contesto di sicurezza, motivo per cui il pool di connessioni corrisponde alle connessioni in base alla stringa di connessione esatta
-
Ruoli dell'applicazione immessi tramite sp_setapprole, poiché non è stato possibile ripristinare i ruoli dell'applicazione prima di SQL Server 2005. A partire da SQL Server 2005, è possibile ripristinare i ruoli dell'app, ma solo con informazioni aggiuntive che non fanno parte della sessione. Prima di chiudere la connessione, i ruoli dell'applicazione devono essere ripristinati manualmente tramite sp_unsetapprole utilizzando un valore "cookie" che viene acquisito quando
sp_setapprole
viene eseguito.
Nota:includo qui l'elenco perché non voglio che vada perso nel web sempre transitorio.