Está en la página 1de 6

Diagnóstico de problemas de conexión a SQL Server 2005/2008

A diferencia de lo que sucedía con SQL Server 2000, conectarse a SQL Server 2005/2008 cuando está instalado en un XP, Windows 2003/2008, Vista o Windows 7 atrás de un firewall, suele presentar ciertas dificultades en el diagnóstico del problema. Los principales motivos son que, desde SQL Server 2005, se aplicaron dos cambios importantes respecto a la versión 2000: Apagado de protocolos de red y el servicio SQL Browser.

Para hacer más seguro al producto, la conectividad fue reducida por omisión. Durante la instalación de una edición Express o Developer, el servicio SQL solamente escucha vía Shared Memory (SM) y Named-pipe (NP) local (TCP, NP remoto y VIA están desactivados). Si se está instalando una edición Enterprise, Standard o Workgroup, SM, NP local y TCP están habilitados. Entonces, para hacer una conexión remota primero hay que asegurarse que 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 intente 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 NP "\\pipe\sql\query".

Hay que tener en cuenta que si en una misma máquina existen varias instancias de SqlServer, solo la predeterminada corre por el puerto 1433, y todas las demás escuchan en un puerto que les asigna el Servicio de Resolución de SQL Pero además habrá que tener en cuenta algo MUY IMPORTANTE, y es que el Servicio de Resolución de SQL corre en el Puerto UDP 1434.

Instancia con nombre

Tenga en cuenta lo siguiente nombre de una instancia de SQL Server:

Los nombres de instancia no distinguen entre mayúsculas y minúsculas.

Los nombres de instancia no pueden contener el término "defecto" o palabras clave reservadas. Si una palabra clave reservada se utiliza en un nombre de instancia, un error de instalación va a producir.

Si se especifica MSSQLServer nombre de la instancia, una instancia predeterminada se creará. Para SQL Server Express, si se especifica SQLExpress como nombre de instancia, una instancia predeterminada se creará.

Los nombres de instancias están limitados a 16 caracteres.

El primer carácter del nombre de la instancia debe ser una letra.

Los siguientes caracteres pueden ser letras definidas por el estándar Unicode 2.0, números decimales de scripts básicos nacionales de América o de otra índole, el signo de dólar ($), o un guión bajo (_).

Espacios incrustados ni otros caracteres especiales no están permitidos en los nombres de

instancia.

La barra invertida (\), coma (,), dos puntos (:), punto y coma (;), comilla simple ('),

comercial (&), y el signo de arroba (@) tampoco están permitidos.

 

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.

TCP/IP o NP, si el protocolo usado no está habilitado . Falla de conexión sobre TCP/IP

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".(compartir archivos e

impresoras)

2.

Printer Sharing".(compartir archivos e impresoras) 2. 3. Falla de conexión a la instancia SQL remota si

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.

el SQL Browser no está iniciado o si el puerto TCP 1434 (donde escucha el SQL

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.

for Services and Connections / Remote Connections. SS2008: Usar Management Studio / Object Explorer /

SS2008: Usar Management Studio / Object Explorer / Seleccionar instancia, clic-derecho, propiedades, Connections y marcar "Allow connections to this server".

/ 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

netstat -noa | more

winxp netstat -abn

findstr NumeroPuerto netstat -noa | more winxp netstat -abn 4. Verificar el servicio SQL Browser: Ejecutar

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.

la sección "Advanced" y confirmar que está activo. 5. Habilitar "File and Printer Sharing" en la

5. Habilitar "File and Printer Sharing" en la lista de excepciones del firewall.

Sharing" en la lista de excepciones del firewall. 6. Agregar el puerto TCP y/o SQLSERVR.EXE (

6. Agregar el puerto TCP y/o SQLSERVR.EXE (

firewall.

7. Agregar SQLBROWSER.EXE (

agregar el puerto UDP 1434.

\Binn\sqlservr.exe)

a la lista de excepciones del

\Shared\sqlbrowser.exe)

a la lista de excepciones del firewall o

Para los puntos 6 y 7 ocupar archivo puertos.bat que ingresa los puertos este archivo tiene dos versiones una para xp y otra para W7 y 2008.

8. Crear excepciones en los antivirus para extensiones de archivo .MDF .LDF y NDF

9. 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 "\\pipe\sql\query"

EN LA ESTACION CLIENTE:

1. Probar PING:

ping IPservidorSql

2. Probar \\IpServidorSql

3. 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.

poner a TCP al comienzo de la lista de protocolos. 5. Configurar MDAC: Si se usa

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).

habilitar NP y TCP (poner TCP primero en la lista). 6. Probar conexión con OSQL.EXE o

6. Probar conexión con OSQL.EXE o SQLCMD.EXE:

osql /S servidor\instancia /E osql /S servidor\instancia /U usuario /P password