Error de TableAdapter solo durante tráfico alto
-
03-07-2019 - |
Pregunta
Estoy trabajando en el proyecto de otra persona que hace un uso intensivo de los TableAdapters. El sitio funciona, pero regularmente agrega una entrada en el registro de eventos:
" ExecuteReader requiere una apertura y Conexión disponible. La conexión es El estado actual se está conectando. "
Sin embargo, el sitio no lanza una excepción, a menos que haya un alto tráfico (más de 5 solicitudes por segundo), la excepción es la misma, que apunta a esta línea de código:
this.Adapter.Fill(dataTable);
Rastreo de pila: en System.Data.SqlClient.SqlConnection.GetOpenConnection (String método) en System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute (String método, comando SqlCommand)
¿Cómo puedo detener este error? Gracias.
Resulta que solo estaba obteniendo la mitad de la imagen, el error, cuando arrojaría un error es:
" Ya hay un DataReader abierto asociado con este comando que debe cerrarse primero. "
Solución
Yo diría que probablemente estés usando la misma conexión para múltiples propósitos y uno de ellos se está cerrando con otro hilo.
Recomiendo agregar algún seguimiento para averiguar qué está pasando. Es difícil depurar este tipo de errores, los que solo obtienes cuando estás en producción :(
Otros consejos
Si parece que ha excedido el número permitido de conexiones abiertas a su base de datos. Esto se puede establecer en la cadena de conexión dando valores para los valores de Tamaño mínimo de grupo y Tamaño máximo de grupo. Creo que los valores predeterminados son 0 para el tamaño mínimo de la piscina y 100 para el tamaño máximo de la piscina, pero no estoy seguro.
Intenta cambiarlos y ver si ayuda.