2010-12-16 14 views
14

¿Alguien me puede informar cómo hacer la agrupación de conexiones en ADO.Net? Necesito conectarme a 3 bases de datos separadas. 2 de ellos están en el mismo servidor y el otro en uno separado.C# SQLConnection agrupación

Mejor con snipts código ..

Respuesta

13

, siempre y cuando que son estrictos acerca de la eliminación de sus conexiones, el valor por defecto (para SQL-servidor por lo menos) es que se solo trabaja de forma automática En su ejemplo, solo podría tener 3 conexiones subyacentes (una por cadena de conexión).

Pero siempre asegurarse de que sus conexiones están dispuestos, a ser posible con using:

using(var conn = new SqlConnection(connectionString)) { 
    // use conn 
} 

entonces se libera de nuevo a la piscina (para su reutilización cuando la misma cadena de conexión se ve siguiente) incluso cuando una excepción es lanzada

Para desactivar agrupación (si lo desea), incluya Pooling=false; en la serie de conexión.

7

No es necesario configurar o ajustar nada en especial, simplemente dejar que suceda ... La mayoría de los problemas que he visto son causadas por la gente que no se cierren las conexiones o de ser demasiado inteligente

las piscinas son creados por cada cadena de conexión por lo que tendría tres en este caso

+0

tres conexiones o dos conexiones? –

+1

Uno por cadena de conexión. Entonces, incluso si dos están en el mismo servidor, diferentes bases de datos hacen que las cadenas de conexión sean diferentes. –

5

Ciertos proveedores hacen no proporcionan la agrupación de conexiones. Que yo sepa esto incluye cadenas de conexión a las bases de datos de Microsoft Access (Jet) y SQL Server CE (edición compacta).

La falta de agrupamiento de conexiones hace que el acceso a la base de datos sea notablemente más lento.

Una solución para la combinación de Jet que faltaba era que siempre tuviera una única conexión a la base de datos de Jet abierta durante toda la vida del programa (al contrario de lo que es la técnica recomendada). Esto aceleró enormemente las consultas SQL de mi base de datos de Jet Access desde aplicaciones .NET, pero también solo funciona en bases de datos Jet locales; para las bases de datos de Jet en recursos compartidos de red, obtengo excepciones relativamente rápidas sobre demasiados manejadores de archivos abiertos.

Para SQL Server CE, no encontré ninguna solución hasta el momento.

Cuestiones relacionadas