studio servidores saber registrados que puerto puede permitir para name management escucha entrantes crear configurar conexiones conectar como acceso abrir sql-server

sql server - servidores - Puesta en común de conexión SQL y registro/cierre de sesión de auditoría



servidores registrados sql server 2008 (2)

Cuando perfilo mi aplicación usando el Analizador del Servidor SQL, veo muchos mensajes de Inicio de sesión de Auditoría y Cierre de sesión de Auditoría para las conexiones a la misma base de datos. Me pregunto, ¿esto indica que algo está mal con mi agrupación de conexiones? La razón por la que pregunto es porque encontré esto en la documentación de MSDN con respecto a la agrupación de conexiones:

Los eventos de inicio de sesión y cierre de sesión no se generarán en el servidor cuando se recupera o se devuelve una conexión al grupo de conexiones. Esto se debe a que la conexión no se cierra realmente cuando se devuelve al grupo de conexiones. Para obtener más información, vea Clase de evento de inicio de sesión de auditoría y clase de evento de cierre de sesión de auditoría en los libros en pantalla de SQL Server.

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

Además, ¿alguien tiene alguna sugerencia para determinar qué tan efectiva es la agrupación de conexiones para un servidor SQL determinado? Tengo muchas bases de datos en un único servidor y sé que esto puede tener un gran impacto, pero me pregunto si existe una manera fácil de obtener métricas sobre la eficacia de mi agrupación de conexiones. ¡Gracias por adelantado!


Recuerde que las conexiones se agrupan por conexión. Si tiene muchas bases de datos y se conecta utilizando muchas conexiones, su aplicación creará una nueva conexión cuando no exista ninguna con la conexión correcta. Luego agrupará esa conexión y, si el grupo está lleno, conectará una conexión existente. El tamaño de grupo máximo predeterminado es de 100 conexiones, por lo que si circula de forma rutinaria a través de más de 100 bases de datos, cerrará y abrirá conexiones todo el tiempo.

No es ideal, pero puede resolver el problema conectándose siempre a una única base de datos (una cadena de conexión) y luego cambiando el contexto de db ''USE [DBName]''. Hay inconvenientes:

  • Pierde la capacidad de especificar un usuario / pase por cadena de conexión (su usuario de la aplicación necesita permiso para todas las bases de datos).
  • Su SQL se vuelve más complejo (especialmente si está usando un ORM listo para usar o procesos almacenados).

Puede experimentar con aumentar el Tamaño de grupo máximo si el recuento de su base de datos no es enorme. De lo contrario, si algunas bases de datos se usan con frecuencia, mientras que otras no, se puede desactivar la agrupación en los dbs infrecuentes. Ambos elementos se configuran a través de connectionstring .

En cuanto a las métricas, monitorear los eventos de inicio y cierre de sesión en SQL Server es un buen comienzo. Si su aplicación se está agrupando bien, no debería ver muchas de ellas.


Mientras que el artículo de MSDN dice que el evento solo se generará para conexiones no reutilizadas, la documentación de SQL Server contradice esta afirmación:

"La clase de evento de inicio de sesión de auditoría indica que un usuario ha iniciado sesión exitosamente en Microsoft SQL Server. Los eventos en esta clase son activados por conexiones nuevas o por conexiones que se reutilizan desde un grupo de conexiones".

La mejor manera de medir la efectividad de la agrupación es recolectar el tiempo dedicado a conectarse con y sin agrupar. Con la agrupación, debería ver que la primera conexión es lenta y las siguientes son extremadamente rápidas. Sin agrupar, cada conexión llevará mucho tiempo.

Si desea realizar un seguimiento del evento de Inicio de sesión de auditoría, puede utilizar la columna de datos EventSubClass para determinar si el inicio de sesión tiene una conexión reutilizada o una conexión nueva. El valor será 1 para una conexión real y 2 para una conexión reutilizada de pool.application.