Una aplicación ADO.Net solo a veces puede conectarse a otro servidor en la red local. Parece aleatorio si un intento de conexión dado tiene éxito o falla. La conexión utiliza una cadena de conexión con el formato:
Servidor = THESERVER \ TheInstance; Base de datos = TheDatabase; Id de usuario = TheUser; Contraseña = ThePassword;
el error devuelto es:
Tiempo de espera de conexión caducado. El período de tiempo de espera transcurrió mientras se intentaba consumir el reconocimiento del protocolo de enlace previo al inicio de sesión.
Esto podría deberse a que falló el protocolo de enlace previo al inicio de sesión o que el servidor no pudo responder a tiempo.
El tiempo transcurrido al intentar conectarse a este servidor fue - inicialización [Pre-Login] = 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ña, 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?
fuente
Respuestas:
Resultó que TCP / IP estaba habilitado para la dirección IPv4, pero no para la dirección IPv6, de
THESERVER
.Aparentemente, algunos intentos de conexión terminaron usando IPv4 y otros usaron IPv6.
Habilitar TCP / IP para ambas versiones de IP resolvió el problema.
El hecho de que SSMS funcionara resultó ser una coincidencia (los primeros intentos probablemente utilizaron IPv4). Algunos intentos posteriores de conectarse a través de SSMS dieron como resultado el mismo mensaje de error.
Para habilitar TCP / IP para direcciones IP adicionales:
fuente
Acabo de aparecer el mismo error que se alineó sospechosamente con la última ronda de actualizaciones de Microsoft (02/09/2016). Descubrí que SSMS se conectó sin problemas mientras mi aplicación ASP.NET devolvió el error "período de tiempo de espera transcurrido al intentar consumir el reconocimiento de reconocimiento 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:
En mi situación, la única conexión afectada era una que usaba seguridad integrada y yo me hacía pasar por un usuario antes de conectarme, ¡otras conexiones al mismo servidor usando autenticación SQL funcionaron bien!
2 sistemas de prueba (clientes separados y servidores SQL) se vieron afectados al mismo tiempo, lo que me llevó a sospechar de una actualización de Microsoft.
fuente
Resolví el problema como Eric pero con algunos otros cambios:
Y
fuente
Tuve el mismo problema al intentar conectarme a un servidor en una red local (a través de VPN) desde Visual Studio, mientras configuraba un modelo de datos de entidad.
Se las arregló para resolver solo configurando
TransparentNetworkIPResolution=false
la cadena de conexión. En VS Add Connection Wizard, puede encontrarlo en la pestaña Avanzado.fuente
Tuve el mismo problema de protocolo de enlace cuando me conecté a un servidor alojado.
Abrí mi centro de redes y recursos compartidos y habilité IPv6 en mi conexión de red inalámbrica.
fuente
Mi ejecutable que se creó con .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 actualizaciones de Windows estaba activada) - https://support.microsoft.com/?kbid=3186539
La desinstalación de .NET Framework 4.7 resolvió problemas de conexión.
Aparentemente, hay un cambio importante 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 del marco.
fuente
Solucioné este error en Windows Server 2012 y SQL Server 2012 habilitando IPv6 y desbloqueando el puerto de entrada 1433.
fuente
En nuestro caso, el problema se produjo debido a la configuración del clúster de disponibilidad. Para resolver este problema, tuvimos que establecerlo
MultiSubnetFailover
en True en la cadena de conexión.Más detalles sobre MSDN
fuente
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
fuente
En mi caso, sobre todas las opciones ya estaban allí.
Lo resolvió aumentando el tiempo de espera de conexión = 30.
fuente
Antes de que pierda más tiempo resolviendo el problema, como yo, intente reiniciar su máquina con Windows . Me funcionó después de aplicar todas las demás soluciones.
fuente
Tuve este problema cuando hice una migración de SharePoint 2010 a 2013. Sospeché que debido a que el servidor de la base de datos está al otro lado de un firewall que no enruta IP6, estaba tratando de usar IP6 y fallaba al conectarse a la base de datos.
Creo que el problema ya está resuelto. Los errores parecen haberse detenido. Lo que hice fue simplemente deshabilitar IP6 (desmarcándolo) para el adaptador de red en los servidores de SharePoint.
fuente
Tuve este mismo problema, pero me estaba conectando a una base de datos remota usando una dirección IP estática. Entonces, ninguna de las soluciones anteriores resolvió mi problema.
No pude agregar la asignación de usuarios 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 usuarios estuviera configurada para acceder a mi base de datos.
fuente
Resolvió este problema mediante el bloqueo / lista negra de direcciones IP que intentaban forzar las cuentas de usuario. Verifique sus registros de acceso SQL para ver si hay una gran cantidad de intentos fallidos de inicio de sesión (generalmente para la cuenta 'sa').
fuente
Para mí, resulta que el firewall en el servidor de Windows estaba bloqueando el puerto 1433, que es el puerto predeterminado del servidor SQL. Entonces, agregar una regla de entrada para aceptar esas conexiones fue el truco para mí.
fuente
En mi caso, el parámetro
Persist Security Info=true
con el usuario y la contraseña en la cadena de conexión está causando el problema. Eliminar el parámetro o configurar parafalse
resolver el problema.fuente
Intente un simple reinicio de SQL Server antes de hacer algo drástico. Podría arreglarlo. Lo hizo por mi
fuente
Desafortunadamente, tuve un problema con Local SQL Server instalado dentro de Visual Studio y aquí muchas soluciones no funcionaron para mí. Todo lo que tengo que hacer es restablecer mi Visual Studio, yendo a:
Panel de control> Programa y características> Lanzador de configuración de Visual Studio
y haga clic en el botón Más y elija Reparar
Después de eso, pude acceder a mi servidor SQL local y trabajar con bases de datos SQL locales.
fuente
Tuve el mismo problema que se resuelve automáticamente después de la última actualización de Microsoft Windows, ¿alguien experimenta lo mismo?
fuente
Tuve el problema exacto, probé varios soultion no funcionó, por último reinicié el sistema, funcionó bien.
fuente
Para rastrear el error "El tiempo de espera de la conexión expiró" , asegúrese de que:
fuente
Agregar una respuesta aquí, a pesar de la respuesta previamente aceptada. Como se confirmó que mi escenario era DNS. Más específicamente, un tiempo de espera de dns durante el protocolo de enlace previo al inicio de sesión. Al cambiar de un nombre DNS a una dirección IP (o al usar la entrada del archivo Hosts), evita el problema. Aunque a costa de perder la resolución automática de ip.
Por ejemplo, incluso con el valor de tiempo de espera de una cadena de conexión establecido en 60 durante un minuto completo, aún sucedería dentro de un par de segundos del intento. Lo que lleva a uno a preguntarse por qué se agota el tiempo de espera antes del período de tiempo de espera especificado. DNS.
fuente