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?

¿Fue útil?

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.

http://msdn.microsoft.com/en-us/library/ms173763.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top