¿Qué hace & # 8220; exec sp_reset_connection & # 8221; Qué significa en SQL Server Profiler? [duplicar]
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- ¿Qué hace sp_reset_connection? 2 respuestas
Intentando entender qué significa Sql Profiler al emitir " sp_reset_connection " ;.
Tengo lo siguiente, " exec sp_reset_connection " línea seguida de BatchStarting y Completed,
RPC:Completed exec sp_reset_connection
SQL:BatchStarting SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
SQL:BatchCompleted SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
Básicamente, la primera línea " exec sp_reset_connection " significa todo el proceso (mi conexión se abrió, se ejecutó el proceso de selección, luego la conexión se cerró y se volvió a liberar al grupo) ¿solo tiene lugar? O mi conexión aún está en etapa abierta.
Y, ¿por qué se ejecuta sp_reset_connection antes de mi propia instrucción select? ¿No debería ser el restablecimiento después del sql del usuario?
Estoy tratando de saber ¿hay alguna manera de saber con más detalle cuándo se abre y se cierra una conexión?
Al ver " exec sp_reset_connection " ;, ¿eso significa que mi conexión está cerrada?
Solución
Como dijeron las otras respuestas, sp_reset_connection
indica que el grupo de conexiones se está reutilizando. ¡Tenga en cuenta una consecuencia particular!
El blog MSDN de Jimmy Mays dijo:
sp_reset_connection NO restablece el nivel de aislamiento de transacción a la servidor predeterminado del anterior configuración de la conexión.
ACTUALIZACIÓN : a partir de SQL 2014, para los controladores de clientes con TDS versión 7.3 o superior, los niveles de aislamiento de la transacción se restablecerán a los valores predeterminados.
ref: SQL Server: el nivel de aislamiento se filtra a través de conexiones agrupadas
Aquí hay información adicional:
¿Qué hace sp_reset_connection? hacer?
Capas de API de acceso a datos como ODBC, OLE-DB y System.Data.SqlClient all llamar al procedimiento almacenado (interno) sp_reset_connection cuando se reutiliza un conexión desde un grupo de conexiones. Eso hace esto para restablecer el estado de la conexión antes de que se reutilice, sin embargo, en ninguna parte se documenta qué las cosas se restablecen. Este artículo intenta para documentar las partes de la conexión que se restablece.
sp_reset_connection restablece el siguientes aspectos de una conexión:
Todos los estados y números de error (como @@ error)
Detiene todas las CE (contextos de ejecución) que son subprocesos secundarios de un EC padre ejecutar una consulta paralela
Espera cualquier E / S pendiente operaciones pendientes
Libera cualquier búfer retenido en el servidor por la conexión
Desbloquea cualquier recurso de búfer que son utilizados por la conexión
Libera toda la memoria asignada propiedad de la conexión
Borra cualquier trabajo o temporal tablas creadas por conexión
Mata todos los cursores globales propiedad de conexión
Cierra cualquier manejador SQL-XML abierto que esté abierto
Elimina cualquier tabla de trabajo abierta relacionada con SQL-XML
Cierra todas las tablas del sistema
Cierra todas las tablas de usuario
Descarta todos los objetos temporales
Cancela transacciones abiertas
Defectos de una transacción distribuida cuando se alista
Disminuye el recuento de referencia para usuarios en la base de datos actual que libera bloqueos de bases de datos compartidas
Libera los bloqueos adquiridos
Libera todos los identificadores adquiridos
Restablece todas las opciones de SET a los valores predeterminados
Restablece el valor @@ rowcount
Restablece el valor de identidad @@
Restablece cualquier rastreo de nivel de sesión opciones usando dbcc traceon ()
Restablece CONTEXT_INFO a
NULL
en SQL Server 2005 y versiones más recientes [no forma parte del artículo original]sp_reset_connection NO se restablecerá:
Contexto de seguridad, por eso la agrupación de conexiones coincide con las conexiones basado en la cadena de conexión exacta
Roles de aplicación ingresados usando sp_setapprole, desde la aplicación los roles no se pueden revertir
Nota: Incluyo la lista aquí, ya que no quiero que se pierda en la web siempre transitoria.
Otros consejos
Es una indicación de que se está utilizando la agrupación de conexiones (que es algo bueno).
Nota sin embargo:
Si emite SET TRANSACTION ISOLATION LEVEL en un procedimiento almacenado o disparador, cuando el objeto devuelve el control, el nivel de aislamiento se restablece al nivel vigente cuando se invocó el objeto. Por ejemplo, si configura REPEATABLE READ en un lote y el lote llama a un procedimiento almacenado que establece el nivel de aislamiento en SERIALIZABLE, la configuración del nivel de aislamiento vuelve a REPEATABLE READ cuando el procedimiento almacenado devuelve el control al lote.