2010-09-28 21 views
9

Tengo una aplicación que usa SqlConnection.ClearAllPools para cerrar todas las conexiones antes de colocar una base de datos.SqlConnection.ClearAllPools, ¿qué se borra?

Hay un caso donde la conexión todavía está allí. Esta conexión se ha creado en otro dominio de aplicación.

Así que me pregunto qué conexiones están cerradas por SqlConnection.ClearAllPools?

  • ¿Solo las conexiones abiertas por el proceso de llamada (o AppDomain)?
  • ¿Todas las conexiones abiertas por esta máquina?
  • ...?

Respuesta

9

Cierra todas las conexiones abiertas solo por el proceso de llamada. Vacía todos los grupos de conexiones que están vinculados al proceso. Quote:

El conjunto de conexiones y la cadena de conexión van de la mano. Cada grupo de conexiones está asociado con una cadena de conexión distinta y eso también es específico de la aplicación. A su vez, lo que significa es que se mantiene un grupo de conexiones por separado para cada proceso, dominio de aplicación y cadena de conexión distintos.

+0

Gracias. La documentación no es clara al respecto. Sé que hay un grupo para cada configuración y cada aplicación. Pero ClearAllPools es plural y borra varias agrupaciones. ¿Pero cuáles? No puede confiar en la configuración, porque es un método estático sin ningún argumento. ¿Pero confía en el dominio de proceso/aplicación? –

+0

@Stefan, sí, la documentación no es clara sobre este método. De hecho, podría haber múltiples grupos por dominio de aplicación si utiliza diferentes cadenas de conexión. Una vez que pasa una cadena de conexión a 'SqlConnection' dentro de un dominio de aplicación, esta conexión se extraerá del grupo asociado a este grupo de conexiones o se creará un nuevo grupo si no existe. Es por eso que también existe el método 'SqlConnection.ClearPool' que le permite borrar el grupo asociado a una conexión dada solamente. Así que básicamente el grupo es por cadena de conexión/por dominio de aplicación. –

+0

Claro, esa es la parte que pude encontrar en la documentación. Pero no pude derivar el "alcance" de 'ClearAllPools' de esto. –

Cuestiones relacionadas