sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué significa exec sp_reset_connection en Sql Server Profiler?

Como dijeron las otras respuestas, sp_reset_connection indica que el grupo de conexiones se está reutilizando. ¡Tenga en cuenta una consecuencia particular!

Blog de MSDN de Jimmy Mays dijo:

sp_reset_connection NO restablece el nivel de aislamiento de la transacción al valor predeterminado del servidor desde la configuración de la conexión anterior.

ACTUALIZAR :a partir de SQL 2014, para los controladores de cliente con TDS versión 7.3 o superior, los niveles de aislamiento de transacciones se restablecerán a los valores predeterminados.

ref:SQL Server:fugas de nivel de aislamiento en conexiones agrupadas

Aquí hay información adicional:

¿Qué hace sp_reset_connection?

Las capas de API de acceso a datos como ODBC, OLE-DB y System.Data.SqlClient llaman a los procedimientos almacenados (internos) p_reset_connection cuando se reutiliza una conexión de un grupo de conexiones. Hace esto para restablecer el estado de la conexión antes de que se vuelva a utilizar, sin embargo, en ninguna parte se documenta qué cosas se restablecen. Este artículo trata de documentar las partes de la conexión que se restablecen.

sp_reset_connection restablece los siguientes aspectos de una conexión:

  • Todos los estados y números de error (como @@error)

  • Detiene todos los EC (contextos de ejecución) que son subprocesos secundarios de un EC principal que ejecuta una consulta paralela

  • Espera por cualquier operación de E/S pendiente que esté pendiente

  • Libera cualquier búfer retenido en el servidor por la conexión

  • Desbloquea cualquier recurso de búfer que utilice la conexión

  • Libera toda la memoria asignada propiedad de la conexión

  • Borra cualquier trabajo o tablas temporales creadas por la conexión

  • Mata todos los cursores globales propiedad de theconnection

  • Cierra cualquier identificador 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 usuarios

  • Suelta todos los objetos temporales

  • Cancela transacciones abiertas

  • Defectos de una transacción distribuida cuando se da de alta

  • Disminuye el recuento de referencias para los usuarios en la base de datos actual, lo que libera los bloqueos de la base de datos compartida.

  • Libera bloqueos adquiridos

  • Libera cualquier identificador adquirido

  • Restablece todas las opciones de SET a los valores predeterminados

  • Restablece el valor de @@rowcount

  • Restablece el valor de @@identity

  • Restablece cualquier opción de rastreo a nivel de sesión usando dbcc traceon()

  • Restablece CONTEXT_INFO a NULL en SQL Server 2005 y posteriores [ no forma parte del artículo original ]

sp_reset_connection NO se restablecerá:

  • Contexto de seguridad, por lo que la agrupación de conexiones coincide con las conexiones en función de la cadena de conexión exacta

  • Las funciones de aplicación se ingresaron mediante sp_setapprole, ya que las funciones de aplicación no se podían revertir antes de SQL Server 2005. A partir de SQL Server 2005, las funciones de aplicación se pueden revertir, pero solo con información adicional que no forma parte de la sesión. Antes de cerrar la conexión, los roles de la aplicación deben revertirse manualmente a través de sp_unsetapprole usando un valor de "cookie" que se captura cuando sp_setapprole se ejecuta.

Nota:Incluyo la lista aquí porque no quiero que se pierda en la web siempre transitoria.