Pregunta

Abro una conexión como esta:

Using conn as New OdbcConnection(connectionString)
    conn.Open()
    //do stuff
End Using

Si la agrupación de conexiones está habilitada, la conexión no se cierra físicamente, sino que se libera al grupo y se reutilizará.Si está inhabilitado se cerrará físicamente.

¿Hay alguna forma de saberlo? programáticamente si ¿La agrupación de conexiones está habilitada o no?¿Y la cantidad de conexiones usadas y no utilizadas actualmente abiertas en el grupo?

EDITAR: Necesito obtener esta información desde el programa, no puedo verificarla manualmente en cada PC donde se implementará el programa.

¿Fue útil?

Solución

Parece que puedes leer esta clave de registro:

[HKEYLOCALMACHINE]\SOFTWARE\ODBC\ODBCINST.INI\SQL Server\CPTimeout

(o alguna variante del mismo, dependiendo de su sistema operativo y cuenta de usuario).Si el valor es 0, la agrupación de conexiones está deshabilitada.Si tiene un valor superior a 0, está habilitado.

Ver:

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

No estoy seguro de obtener la cantidad de conexiones abiertas.Sólo curioso:¿Por qué necesitas saber el número?

Otros consejos

MSDN como directrices detalladas sobre este

Configuración de la agrupación de conexión del administrador de fuente de datos

[recorte]

Alternativamente, puede iniciar el administrador de fuente de datos ODBC en la solicitud de ejecución.En la barra de tareas, Haga clic en Inicio, haga clic en Ejecutar y luego escriba ODBCAD32.

La pestaña para administrar la agrupación de conexión se encuentra en el cuadro de diálogo Administrador de fuente de datos ODBC en la versión ODBC 3.5 y más tarde.Configuración de la agrupación de conexión desde el registro

Para las versiones anteriores a la versión 3.5 de los componentes del núcleo de ODBC, debe modificar el registro directamente para controlar el valor de CPTIMEOUT de la conexión de conexión.

La agrupación siempre la gestiona el software del servidor de datos.El punto es que en .NET no debería tener que preocuparse por eso (por ejemplo, esta es la razón por la que siempre debe usar SqlConnection cuando trabaje con SQL Server; parte de esto es que permite la agrupación de conexiones).

Actualizar

En Vista, simplemente escriba "ODBC" en el menú Inicio y encontrará la aplicación por usted.

Actualización tras la aclaración del OP

En términos de determinar si la agrupación de conexiones está habilitada en cada máquina, observar la Directrices de MSDN Yo diría que sería mejor si verificara los valores del registro (consulte Este artículo para obtener sugerencias sobre el acceso al registro).

TBH, sin embargo, a menos que las máquinas cliente sean realmente malas, posiblemente ni siquiera me molestaría.AFAIK, está habilitado de forma predeterminada y abrir conexiones en una máquina cliente (en mi experiencia) nunca ha sido un gran problema.Sólo se vuelve realmente importante cuando lotes se están abriendo.

Para determinar la cantidad de conexiones abiertas en cada base de datos, pruebe este sql; lo obtuve de un documento en Internet

select  db_name(dbid) , count(*) 'connections count'
  from master..sysprocesses
 where spid > 50 and spid  @@spid
 group by  db_name(dbid)
 order by count(*) desc

SQLServer utiliza Spids <= 50.Entonces, el sql anterior le indicará la conexión utilizada por sus programas.

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