
¿Por qué un cliente de SQL Server dejó de conectarse a SQL Server ejecutándose en otro nodo de mi red local?
Esto ha estado funcionando correctamente durante mucho tiempo. La PC cliente (PC A) se estaba conectando hace dos días. No se ha cambiado nada ni en la PC A ni en la PC que aloja SQL Server (MYSERVER). Cuando intento conectarme, aparece el error "Se produjo un error relacionado con la red al establecer una conexión con SQL Server. No se encontró el servidor o no se pudo acceder a él". Puedo conectarme exitosamente a la misma instancia de SQL Server desde otra PC, la PC B.
Ambas PC utilizan la misma cadena de conexión en un programa C#, pero he confirmado que también falla una conexión desde SQL Server Management Studio en la PC A. Además, la conexión en SQL Server Management Studio funciona si cambio el nombre del servidor a la dirección IP del nodo del servidor, es decir, 192.168.178.20\SQLEXPRESS se conecta, pero MYSERVER\SQLEXPRESS no logra conectarse. Parece que Windows o el Cliente SQL no pueden resolver el nombre del host (aunque lo hicieron hasta hace un par de días).
Las dos PC cliente y la PC servidor ejecutan Windows 10. La red local es un grupo de trabajo, no un dominio. Los dos clientes utilizan la autenticación de Windows para conectarse al servidor.
En la PC A, verifiqué
el archivo HOSTS no contiene ninguna dirección
Puedo hacer ping a MYSERVER y se resuelve en la dirección correcta 192.168.178.20
no hay alias SQL
la PC usa el servidor DNS correcto en el enrutador
Como solución alternativa, incluí MI SERVIDOR en el archivo de hosts y cambié la dirección IP de MI SERVIDOR a una dirección estática 192.168.178.20, pero no quiero esto de forma permanente.
¿Alguna sugerencia de por qué no se resuelve el nombre del servidor o qué podría hacer para investigar más a fondo?
Respuesta1
La respuesta a esto fue simple. Reinicié mi enrutador.
Lo arreglé con la ayuda deWireshark. Comparé los paquetes entre la PC cliente y el servidor, tanto cuando la dirección del servidor estaba en el archivo HOSTS de Windows del cliente (cuando la conexión a SQL Server siempre funcionó), como cuando el archivo HOSTS estaba vacío (cuando la PC cliente nunca se conectó) . En ambos casos pude ver que se intercambiaban paquetes TCP, pero con la dirección del servidor en el archivo de hosts, también había paquetes TLS para la conexión cifrada. En el otro caso, el cliente pareció enviar la solicitud de conexión al servidor pero no había datos cifrados TLS.
Es posible que haya habido algún problema de DNS en el enrutador. Funcionó un ping del cliente al servidor, pero hubo un ligero retraso. Aunque el cliente pudo resolver la dirección del servidor desde el enrutador para enviar los paquetes TCP correctamente, creo que pudo haber habido un retraso al intentar realizar la autenticación de Windows y esto provocó que el cliente no enviara la solicitud de autenticación correctamente.
De todos modos, reiniciar el enrutador solucionó cualquier problema de DNS que hubiera y el cliente ahora se conecta sin necesitar la dirección del servidor en el archivo HOSTS de Windows.