La conexión a SQL Server funciona a veces

Una aplicación ADO.Net solo a veces puede conectarse a otro servidor en la red local. Parece aleatorio si un bash de conexión dado tiene éxito o falla. La conexión usa una cadena de conexión en la forma:

Servidor = THESERVER \ TheInstance; Database = TheDatabase; User Id = TheUser; Password = ThePassword;

el error devuelto es:

Tiempo de espera de conexión caducado. El tiempo de espera transcurrido al intentar consumir el acuse de recibo previo al inicio de sesión.
Esto podría deberse a que el apretón de manos antes del inicio de sesión falló o el servidor no pudo responder a tiempo.
La duración que se gastó al intentar conectar con este servidor fue: [Inicialización previa al inicio] = 42030; apretón de manos = 0;

La aplicación .NET es una pequeña aplicación de prueba que ejecuta el siguiente código:

using (SqlConnection conn = new SqlConnection(cs)) using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn)) { conn.Open(); int rowCount = (int)cmd.ExecuteScalar(); } 

TheTable es pequeño, solo 78 filas.

Sin embargo, en la misma máquina donde la aplicación .NET recibe este error, puedo conectarme a THESERVER usando SSMS y la Id. De usuario / Contraseña nombrada en la cadena de conexión.

¿Por qué podría fallar la conexión desde una aplicación ADO.Net, pero tener éxito con credenciales idénticas de SSMS?

Resultó que TCP / IP estaba habilitado para la dirección IPv4, pero no para la dirección IPv6, de THESERVER .

Aparentemente, algunos bashs de conexión terminaron usando IPv4 y otros usaron IPv6.

La habilitación de TCP / IP para ambas versiones de IP resolvió el problema.

El hecho de que SSMS funcionó resultó ser una coincidencia (los primeros bashs supuestamente usaron IPv4). Algunos bashs posteriores de conectarse a través de SSMS dieron como resultado el mismo mensaje de error.

Para habilitar TCP / IP para direcciones IP adicionales:

  • Inicie el Administrador de configuración del servidor Sql
  • Abra el nodo Configuración de red del servidor SQL
  • Haga clic con el botón izquierdo en Protocolos para MYSQLINSTANCE
  • En el panel de la derecha, haga clic con el botón derecho en TCP / IP
  • Haga clic en Propiedades
  • Seleccione la pestaña Direcciones IP
  • Para cada dirección IP enumerada, asegúrese de que Activo y Activado sean ambos Sí.

He tenido el mismo error que surgió, que se alineó sospechosamente con la última ronda de actualizaciones de Microsoft (02/09/2016). Descubrí que el SSMS se conectó sin problemas mientras que mi aplicación ASP.NET devolvía el “tiempo de espera transcurrido mientras intentaba consumir el acuse de recibo previo al inicio de sesión”

La solución para mí fue agregar un tiempo de espera de conexión de 30 segundos en la cadena de conexión, por ejemplo:

 ConnectionString="Data Source=xyz;Initial Catalog=xyz;Integrated Security=True;Connection Timeout=30;" 

En mi situación, la única conexión afectada fue una que usaba Seguridad integrada y yo me hice pasar por un usuario antes de conectarme, ¡otras conexiones al mismo servidor usando SQL Authentication funcionaban bien!

¡2 sistemas de prueba (clientes separados y servidores Sql) se vieron afectados al mismo tiempo, lo que me llevó a sospechar una actualización de Microsoft!

Resolví el problema como Eric pero con algunos otros cambios:

  • Inicie el Administrador de configuración del servidor Sql
  • Abra el nodo Configuración de red del servidor SQL
  • Haga clic con el botón izquierdo en Protocolos para MYSQLINSTANCE
  • En el panel de la derecha, haga clic con el botón derecho en TCP / IP
  • Haga clic en Propiedades
  • Seleccione la pestaña Direcciones IP
  • Para cada dirección IP enumerada, asegúrese de que Activo y Activado sean ambos Sí.

Y

  • Para cada dirección IP indicada, asegúrese de que los puertos dynamics TCP estén vacíos y el puerto TCP = 1433 (o algún otro puerto)
  • Abra el firewall de Windows y verifique que el puerto esté abierto en Conexiones entrantes

Tuve el mismo problema de saludo cuando me conecté a un servidor alojado.

Abrí mi red y mi centro de intercambio y habilité IPv6 en mi conexión de red inalámbrica.

enter image description here

Tuve el mismo problema, tratar de conectarme a un servidor en una red local (a través de VPN) desde Visual Studio, mientras establecía un Modelo de datos de entidad.
Logré resolver solo estableciendo TransparentNetworkIp en falso en la cadena de conexión. En VS Add Connection Wizard, puede encontrarlo en la pestaña Avanzado.

Repare este error en Windows Server 2012 y SQL Server 2012 habilitando IPv6 y desbloqueando el puerto entrante 1433.

Mi ejecutable que fue desarrollado usando .NET Framework 3.5 comenzó a informar estos problemas de conexión en aproximadamente la mitad de las veces después de que algunas actualizaciones de Windows se instalaron recientemente (semana del 7 de agosto de 2017).

Las fallas de conexión fueron causadas por .NET Framework 4.7 que se instaló en la computadora de destino (la instalación automática de Windows Updates estaba activada) – https://support.microsoft.com/?kbid=3186539

La desinstalación de .NET Framework 4.7 solucionó los problemas de conexión.

Aparentemente, hay un cambio radical en .NET Framework 4.6.1 – TransparentNetworkIPResolution La actualización de la cadena de conexión según el artículo también resolvió el problema sin la necesidad de revertir la versión de framework.

Tuve el mismo problema, logré resolverlo abriendo / habilitando el puerto 1433 y tcp / ip en el Administrador de configuración de SQL Server y luego reinicié el servidor

enter image description here

En mi caso, todas las opciones ya estaban allí.

Lo resolvió aumentando el Tiempo de espera de conexión = 30. Estudio de administración de SQL Server

Tuve este problema cuando realicé una migración de SharePoint 2010 a 2013. Sospeché que debido a que el servidor de la base de datos está del otro lado de un firewall que no enruta el IP6 que estaba tratando de usar IP6 y falla al conectarse a la base de datos.

Creo que el problema ahora está resuelto. Los errores parecen haberse detenido. Lo que hice fue simplemente deshabilitar IP6 (desmarcando) para el adaptador de red en los servidores de SharePoint.

Tenía el mismo problema, pero me estaba conectando a un db remoto usando una dirección IP estática. Entonces ninguna de las soluciones anteriores resolvió mi problema.

No pude agregar la asignación de usuario adecuada para el inicio de sesión de seguridad que estaba usando, por lo que la solución para mí fue simplemente asegurarme de que la configuración de asignación de usuario estuviera configurada para acceder a mi base de datos.

El error “Tiempo de espera de conexión expirado” se produce normalmente en los siguientes casos

  • Una instancia del motor de base de datos de SQL Server no se está ejecutando.
  • El servicio del navegador SQL Server no se está ejecutando.
  • El TCP / IP está deshabilitado.
  • El nombre del servidor fue escrito incorrectamente.
  • Hay problemas de red.
  • El puerto TCP / IP para la instancia de Database Engine está bloqueado por un firewall.
  • El cliente y el servidor no están configurados para usar el mismo protocolo de red.

Para verificar cómo rastrear este error en función de los motivos anteriores, verifique el vencimiento del tiempo de espera de la conexión. El tiempo de espera transcurrido al intentar consumir el reconocimiento de inicio de sesión previo al inicio de sesión

Resolvió este problema bloqueando / poniendo en lista negra la dirección IP que intentaban forzar las cuentas de usuario. Verifique sus registros de acceso de SQL para un gran número de bashs fallidos de inicio de sesión (generalmente para la cuenta ‘sa’).