Las primeros acciones
para solucionar problemas de conexión remota, hay que asegurarse que Named-pipe
(NP) o TCP están habilitados en la instancia remota de SQL Server.
El servicio SQL Browser es un servicio Windows que
inicia y solicita el puerto UDP 1434. Cuando una aplicación cliente quiere
conectarse, envía un mensaje UDP al servidor por el puerto 1434. El SQL Browser
responde al mensaje indicando cuál es el puerto TCP/IP o el NP en el que la
instancia solicitada está atendiendo.
Ahora
es necesario que el SQL Browser esté iniciado para cuando un cliente intenta
conectarse a una instancia de SQL Server. Si la instancia remota es una
instancia sin nombre, no es requerido tener iniciado al SQL Browser ya que los
clientes van a intentar usar el puerto TCP 1433 y el Named-pipe (NP) "pipesqlquery".
La lista de problemas
que puede aparecer se relacionan entonces con:
1. Falla de conexión sobre TCP/IP o NP, si el protocolo usado no está
habilitado.
2. Falla de conexión sobre TCP/IP o NP si hay un firewall intermedio y están
bloqueados los puertos necesarios o no se ha agregado a la lista de excepciones
del firewall a "File and Printer Sharing".
3. Falla de conexión a la instancia SQL remota si el SQL Browser no está
iniciado o si el puerto TCP 1434 (donde escucha el SQL Browser) no está abierto
en el firewall.
Veamos ahora cómo hacer el tratar un problema de conectividad a una instancia
remota. Asumiremos que la instancia de SQL server está iniciada en un servidor
remoto y que el cliente ha especificado correctamente el nombre de la instancia
remota.
EN EL SERVIDOR SQL:
1. Habilitar TCP y/o
NP remoto:
SS2005: Usar SQL Server Surface Area Configuration / Configuration for Services
and Connections / Remote Connections.
SS2008: Usar Management Studio
/ Object Explorer / Seleccionar instancia, clic-derecho, propiedades,
Connections y marcar "Allow connections to this server".
2.
Verificar el log de errores del servidor SQL, determinar en qué puerto TCP y/o
NP está escuchando.
3. Cuando se usa TCP,
usar el comando de línea NETSTAT para ver si el servidor está escuchando en el
puerto correcto.
netstat -noa findstr NumeroPuerto
4. Verificar el
servicio SQL Browser:
Ejecutar en línea de comandos SERVICES.MSC, buscar el servicio "SQL Server
Browser", habilitarlo y reiniciarlo. También ir a la utilidad SQL Server
Configuration Manager, revisar las propiedades del SQL Browser, en la sección
"Advanced" y confirmar que está activo.
5. Habilitar
"File and Printer Sharing" en la lista de excepciones del firewall.
6. Agregar el puerto
TCP y/o SQLSERVR.EXE (..Binnsqlservr.exe) a la lista de excepciones del
firewall.
7. Agregar
SQLBROWSER.EXE (..Sharedsqlbrowser.exe) a la lista de excepciones del
firewall o agregar el puerto UDP 1434.
8. Confirmar si la
instancia remota SQL es la instancia por omisión (sin nombre)
En este caso debe escuchar en el puerto TCP 1433 y en el NP
"pipesqlquery"
EN LA ESTACION
CLIENTE:
1. Probar PING:
ping IPservidorSql
2.
Probar TELNET:
telnet IPservidorSqlNombreInstancia
NumeroPuerto
Si la consola de comandos queda totalmente negra
sin mensajes, el TELNET ha sido exitoso. Falla cuando aparece un mensaje de
error indicando que no pudo conectarse al servidor.
3. Probar
IpServidorSql
4. Verificar los
protocolos del cliente:
Usar SQL Server Configuration Manager / SQL Native Client Configuration /
Client Protocols. Confirmar que NP o TCP están habilitados; clic en las
propiedades de los protocolos cliente, ver que NP o TCP están habilitados. Se
recomienda poner a TCP al comienzo de la lista de protocolos.
5. Configurar MDAC:
Si se usa MDAC (Driver={SQL Server} o SQLOLEDB.x) en la aplicación cliente, en
línea de comandos ejecutar CLICONFG.EXE, habilitar NP y TCP (poner TCP primero
en la lista).
6. Probar conexión
con OSQL.EXE o SQLCMD.EXE:
osql /S servidorinstancia
/E
osql /S servidorinstancia
/U usuario /P
password
7. Revisar string de conexión
Revisar la sintaxis y los valores del string de conexión de la aplicación
cliente, es frecuente cometer errores en el string de conexión.
8. Revisar alias
Si la aplicación cliente se conecta al servidor remoto usando un alias: Si se
usa MDAC ejecutar CLICONFG.EXE, ver la solapa "Alias". Si se usa el
SQL Native Client, ejecutar SQL Server Configuration Manager y revisar
"Aliases".
(Este articulo, está
realizado gracias a la colaboración de Gustavo Larriera y Blogs del msdn ). Fuente:
http://blogs.msdn.com/sql_protocols/archive/2006/09/30/SQL-Server-2005-Remote-Connectivity-Issue-TroubleShooting.aspx Apunte y recopilación por Norman M.
Pardell
Puedes
consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto,
contestaré tan pronto como me sea posible.