net sql sql-server connection-pooling

sql - net - ¿Qué hace sp_reset_connection?



sql server connection string parameters (2)

sp_reset_connection parece ser llamado por la agrupación de conexiones del Servidor SQL, para garantizar que las conexiones reutilizadas desde el grupo tengan restablecida la mayoría de sus configuraciones. ¿Alguien sabe exactamente lo que hace y lo que no hace?

Por ejemplo, veo en esta publicación que no restablece el nivel de aislamiento de la transacción


De esta publicación en el foro :

El procedimiento almacenado sp_reset_connection se utiliza para restablecer una conexión de manera que cuando se utiliza en un grupo, no se almacena nada de una sesión previa que sea específica de la conexión.


http://www.sqldev.net/misc/sp_reset_connection.htm (la URL ya no funciona)

El texto es blanco en mi navegador (Firefox) ... solo resáltelo con el mouse y podrá ver los detalles ...

Solo colocarlo aquí ya que es difícil de leer en ese sitio

Las capas de API de acceso a datos como ODBC, OLE-DB y SqlClient invocan el procedimiento almacenado (interno) sp_reset_connection al reutilizar una conexión desde 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 reinician. Este artículo intenta documentar las partes de la conexión que se restablecen.

sp_reset_connection restablece los siguientes aspectos de una conexión:

  • Restablece todos los estados y números de error (como @@ error)
  • Detiene todos los CE (contextos de ejecución) que son subprocesos secundarios de un EC padre que ejecuta una consulta paralela
  • Esperará por cualquier operación de E / S pendiente que esté pendiente
  • Liberará los almacenamientos intermedios retenidos en el servidor por la conexión
  • Desbloqueará todos los recursos de búfer utilizados por la conexión
  • Liberará toda la memoria asignada que posee la conexión
  • Va a borrar cualquier trabajo o tablas temporales que se creen por la conexión
  • Matará a todos los cursores globales propiedad de la conexión
  • Cerrará todos los identificadores SQL-XML abiertos que están abiertos
  • Eliminará cualquier tabla de trabajo relacionada con SQL-XML abierta
  • Cerrará todas las tablas del sistema
  • Cerrará todas las tablas de usuario
  • Soltará todos los objetos temporales
  • Abolirá las transacciones abiertas
  • Se desertará de una transacción distribuida cuando se alistó
  • Disminuirá el recuento de referencias para los usuarios en la base de datos actual; que libera bloqueo de base de datos compartida
  • Liberará cerraduras adquiridas
  • Liberará cualquier control que pueda haber sido adquirido
  • Restablecerá todas las opciones de SET a los valores predeterminados
  • Restablecerá el valor @@ rowcount
  • Restablecerá el valor de identidad @@
  • Restablecerá todas las opciones de rastreo de nivel de sesión utilizando dbcc traceon ()

sp_reset_connection NO se reiniciará:

  • Contexto de seguridad, que es la razón por la cual la agrupación de conexiones coincide con las conexiones basadas en la cadena de conexión exacta
  • Si ingresó un rol de aplicación usando sp_setapprole, dado que los roles de la aplicación no se pueden revertir
  • El nivel de aislamiento de la transacción