felipe@felipedonoso.cl
RC6016
1NF3RNU5
Si les sucede que después de haber Instalado SQL Server 2008 o 2005, y desean conectarse remotamente desde algún cliente, obtienen el error:
"A network-related 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 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.) (Microsoft SQL Server, Error: 10060)"
¡¡¡¡No se desesperen por el error anterior!!!!
Esto puede tener solución.
Lo que deberían hacer es habilitar las respectivas reglas del firewall en el sistema Operativo. Windows Server 2008 es algo más complicado en este sentido, y la administración del firewall cambió algo con respecto a windows server 2003. Por defecto lo que deberiamos hacer es habilitar las reglas INBOUND y OUTBOUND, para los puertos 1433 del servicio SQL SERVER y el 1434 para el servicio SQL BROWSER que se encarga de mostrar en nuestro mangement studio las otras instancias de sql server presentes en la red.
Pero puede suceder el caso de que aún así habilitando dichas reglas (excepciones mejor dicho) en el firewall la conexión aún no funciona y volvemos a tener el mismo error. ¿Qué puede suceder? La respuesta puede ser esta: Si han instalado la base de datos SQL Server con un nombre de Instancia propio definido por ustedes, se habilitará automáticamente el puerto dinámico de SQL SERVER, es decir la Instancia recibirá peticiones a través de cualquier puerto que probablemente no sea el 1433. Por default sólo las Instancias nombradas pueden usar puerto dinámico.
Por ejemplo si revisaran los archivos log de SQL SERVER se darían cuenta que en ellos aparece el mensaje en dónde se indica el puerto a través del cual se están recibiendo peticiones, algo así:
SQL server listening on ip_servidor:puerto
Una manera rápida de revisar los archivos de log y buscar el puerto de sql server actual puede ser utilizar el siguiente procedimiento:
Use master
Go
exec Xp_readerrorlog
Ejecutando dicho procedimiento se percatarán de que no están usando el puerto por defecto 1433. Recuerden como mencioné anteriormente que esto sucede sólo para las Instancias nombradas. Para solucionar esto lo que debemos hacer es reasignar el puerto por defecto a la Instancia de SQL Server, que es el 1433.
¿Cómo se logra hacer esto?
Pues bien es bastante sencillo. Primero procedemos a ingresar al SQL SERVER Configuration Manager (que esta dentro del grupo de programas de SQL SERVER), luego dentro de la pestaña SQL Server Network Configuration, seleccionamos Protocols for Instancia (En este caso mi instancia se llama MIRROR). Dentro de esa ventana debemos seleccionar las propiedades del elemento TCP/IP (click secundario). En la nueva ventana seleccionamos la pestaña IP Addresses, y buscamos las propiedades TCP Dynamic ports y TCP Port. En el caso de TCP Dynamic ports procedemos a dejarlo en blanco, y para TCP Port procedemos asignar el 1433 o el que estimemos conveniente, luego reinicien la Instancia. Dejo una imágen como referencia.
Para revisar nuestra configuración podemos ver el puerto que tenemos asignado para sql server luego de reiniciar esta instancia y revisando los logs con el procedimiento exec Xp_readerrorlog, o también revisando la siguiente clave de registro windows (regedit)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\\MSSQLServer\SuperSocketNetLib\Tcp\IPAll
(la x corresponde a su versión de SQL SERVER, por ejemplo si es la versión 2008 debería decir 10)
Documentación oficial:
Eso sería todo lo que es necesario ejecutar.
Mis saludos.