sql server - unity - No se puede deshacerse de la excepción "la conexión física no se puede utilizar"
unity ioc c# (5)
Confirmo ahora, cambiando la cadena de conexión en el servidor para usar "." para la fuente de datos en lugar del nombre de dominio, la excepción parece haber desaparecido. Muy raro como nombre de dominio solía trabajar antes. Debe haber algún tipo de actualización en SQL Server
Estoy a punto de dispararme. Pasé algunas semanas tratando de resolver este problema. Tenemos una aplicación web ASP.NET MVC 4 que utiliza SQL Server 2012 y Entity Framework como ORM y Unity para IoC. La aplicación web está alojada en Amazon EC2. Comencé a recibir la excepción "La conexión física no es utilizable". Sucede pocas veces al día. Busqué muchos artículos y foros y probé todas las sugerencias posibles:
- Se intentó eliminar la agrupación de la cadena de conexión "Sondeo = Falso"
- Intentó limitar el tamaño de la agrupación y la duración de la conexión
- Se intentó cambiar LifetimeManager de Unity a HierarchicalLifetimeManager, PerRequestLifetimeManager. También aseguró que el contexto de las entidades se elimine después del final de la solicitud
- Se eliminaron todas las referencias de TransactionScope.
Cuando ocurre una excepción, la única forma de restaurar la aplicación es reiniciar el servidor, lo cual es muy malo.
Esta es la excepción completa:
Se ha producido un error de nivel de transporte al enviar la solicitud al servidor. (proveedor: Proveedor de sesión, error: 19 - La conexión física no es utilizable)
La conexión de la base de datos es cerrada por el servidor de la base de datos. La conexión sigue siendo válida en el grupo de conexiones de su aplicación; como resultado, cuando toma la cadena de conexión compartida y trata de ejecutarla, no puede llegar a la base de datos. Si está desarrollando Visual Studio, simplemente cierre el servidor web temporal en la barra de tareas.
Si ocurre en producción, restablecer el grupo de aplicaciones para su sitio web debe reciclar el grupo de conexión.
Tal vez debido a una actualización en el sistema de prevención de intrusiones.
Intente consultar el siguiente hilo: http://forums.asp.net/t/1908976.aspx
Espero que pueda ayudar.
Me encontré con este error también. En mi caso, el problema era que la conexión estaba cerrada por el servidor de la base de datos, pero la conexión seguía siendo válida en el conjunto de conexiones de mi aplicación.
Restablecer el grupo de aplicaciones hizo que mi aplicación volviera a funcionar.
Sé que este es un post antiguo, pero recientemente tuve un tiempo horrible con este error y no hubo soluciones en ninguno de los blogs.
Detalles específicos sobre mi problema: aplicación web ASP.NET con target .NET framework 4.5, ver MVC. 5.2.3, Entidad ver. 6.0.0.0, MS SQLServer Express 2014. Mi sistema dev está ejecutando Windows 7 Pro SP1.
Síntomas: el error se produjo repentinamente (no había trabajado en el proyecto durante casi tres semanas, momento en el que funcionó bien). Cuando inicié la aplicación, después de iniciar sesión en el usuario, la segunda consulta enviada a la base de datos por Entity framework ALLWAYS generó el error " Se produjo un error de nivel de transporte al recibir resultados del servidor. (Proveedor: Proveedor de sesión, error: 19 - La conexión física no es utilizable) ". No importaba qué tabla se consultó. El error no fue intermitente y reiniciar el servidor no ayudó. El error ocurrió utilizando IIS y IIS Express.
SqlConnection.ClearAllPools () evitó el error solo para UNA consulta, y no quería agregar esto antes de cada llamada de Entidad en el programa. Intenté todas y cada una de las soluciones en todos los blogs sin ningún resultado, incluso las soluciones a otros errores de nivel de transporte. Retrocedí las actualizaciones de paquetes para mis referencias en un intento de volver a un estado de trabajo. ¡Nada!
La Solución: ¡ El culpable fue la actualización de seguridad de Microsoft SQL Server 2014 SP1 (KB3070446)! ¡Rechacé esta actualización y todo funcionó a la perfección!
Perdí dos días de trabajo dev con este problema, ¡espero que esta publicación pueda ayudar a alguien más a evitar esta agonía!
Se produjo este error después de eliminar MaxDegreeOfParallelism, que se establece de forma predeterminada en -1 o sin límite al configurar db.Database.CommandTimeout = 0.
La sugerencia es establecer MaxDegreeOfParallelism explícitamente en un valor seguro.
Otro escenario : la conexión de red se ha caído incluso durante unos segundos mientras la aplicación se está comunicando con la base de datos del servidor.