Regresando a lo basico: Diagnosticar conexión a SQL Server (Parte 1)


Cuantas veces no hemos visto: 

Un error relacionados con la red o instancia específicos al establecer una conexión a SQL Server. El servidor no se encontró o no estaba accesible. Compruebe que el nombre de instancia es correcto y que SQL Server está configurado para permitir conexiones remotas. (proveedor: con el proveedor de canalizaciones, error: 40 – no se puede abrir una conexión a SQL Server)
Parte 2

También podemos ver el error como (si alguien tiene el texto en español se lo agradecería)

ERROR: (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error:) An error has occurred while establishing a connection to the server. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 5)



An error has occurred while establishing a connection to the server. When connecting to SQL Server 2014, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 1326)

A network-related error or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - No such host is known.) (Microsoft SQL Server, Error: 11001)


En esta primera parte veremos la configuración local.

Lo primero sera verificar que SQL Server este trabajando hagámonos estas preguntas.

¿Es mi SQL Server un standalone?

Si la respuesta es afirmativa, revisemos que el servicio de Sql Server este funcionando en caso de que no sea es pertinente saber si es un cluster y si nos estamos conectando por error al nombre del nodo y a la instancia en vez de conectarnos al nombre del cluster.


Si ambos están en falso es que no tenemos ni AlwaysOn ni Cluster.

Podemos usar "services.msc" o "SQL Server Configuración Manager" para verificar esto. (Ir a Todos los programas >> Microsoft SQL Server XXXX>> Configuration Tools >> SQL Server Configuration Manager >> SQL Server Services, y comprobar

Es posible que veas más de una instancia si tienes varias instaladas, si es así verifica que te estas conectando a la correcta.

Si esta en marcha recuerden que SQL Server Express no trae habilitado TCP/IP Por defecto y debemos de habilitarlo

Aquí vemos el SQL Server Configuration Manager y podemos que que la instancia esta corriendo y donde señalamos estan los protocolos


Una vez verificado esto revisaremos que el protocolo TCP/IP este habilitado en caso contrario lo habilitamos



¿Se pueden conectar localmente pero no remotamente?

Vayan al SQL Server Managment Studio y conectense de manera local, tenemos que verificar que acepte conexiones remotas, esto puede ser por medio de linea de comandos.

Este nos sirve para verificar los permisos el que nos interesa es "Remote access" si esta en 0 es que no permite acceso remoto

exec sp_configure 'show advanced options', '1'
reconfigure with override
GO
exec sp_configure

Con este cambiamos a habilitar si el resultado que nos dio dice 0

EXEC sp_configure 'remote access', 1 ;
GO
RECONFIGURE ;
GO

Esta opción también es posible verla desde el Mangment Studio, dando clic derecho sobre la instancia y seleccionando propiedades.




Este cambio de valor es automático y no necesita un reinicio de la instancia

¿El contra fuegos (firewall) nos esta bloqueando?


Esta en una pregunta difícil de responder y puede varias dependiendo si tenemos complementos de seguridad de otras empresas o el mismo de Windows, en caso de que tengas alguno prueba deshabilitando, si al deshabilitar el contra fuegos sigue fallando y tienes un antivirus también deshabilitalo y prueba nuevamente, si tu antivirus no tiene un modo de controlar los bloques ve con le vendedor o el sitio de soporte de ese producto.


Dando clic derecho sobre el protocolo TCP/IP podremos ver que puerto tenemos asignado, este puerto (normalmente 1433 por defecto o aleatorio si es nombrada) debe ser añadido a las reglas del contra fuegos (firewall).

Aquí encontraran un muy buen documento de Microsoft de como abrir los puertos, noten que esto toma todos los productos que componen SQL Server y esperando que tengan una instalación por defecto.

https://support.microsoft.com/es-es/kb/968872

Notas:
No se usaron comandos más avanzados como el uso de netstat para hacer la guía lo más simple posible.


Comentarios