Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
img
img

 

 

SQL Server
Blog. (Apuntes y Recopilaciones) por Norman M. Pardell

img
img

Conectar a SQL Server con Native Client. Y problemas relacionados.

SNAC (SQL Server Native Client): Es una API de acceso a datos  que combina las tecnologías del Proveedor OLE DB de SQL y el controlador ODBC de SQL, en una sola DLL.

Las aplicaciones ADO pueden usar el proveedor OLE DB de SQL Server Native Client.

Aunque SQL Server Native Client usa los componentes de DAC para Windows, no depende de ninguna versión de DAC para Windows. Puede usar SQL Server Native Client con la versión de DAC para Windows que tenga .

Si tu aplicación usa ODBC para conectarse, puedes ejecutar osql.exe para simular el string de conexión de la aplicación y diagnosticar si existiera algún problema. Si por el contrario la aplicación usa OLEDB, lo puedes hacer  con sqlcmd.exe

Tanto osql.exe como sqlcmd.exe están en la carpeta: %SYSTEMDRIVE%\%ProgramFiles%\Microsoft Sql Server\90\tools\binn.

osql(sqlcmd) /S servidor /E
osql(sqlcmd) /S servidorinstancia /E


Para el buen entendimiento de este articulo se recomienda la lectura de: Solución de problemas en la conexión a SQL Server 2005/2008


Los errores más frecuentes en este tipo de conexiones suelen ser:

 

[SQL Native Client]Named Pipes Provider: Could not open a connection to SQL Server [53]:

El servidor SQL no puede ser accedido o no existe. Intente usar: PING nombreservidor ó PING ipservidor. Si los pings tienen un timeout u otra falla, es posible que el nombre del servidor no está siendo bien resuelto por el DNS o hay algún problema de red o de ruteo a resolver. Obviamente, hay un problema de red si el ping falla cuando se especifica simplemente la dirección IP del servidor.

 

[SQL Native Client]Named Pipes Provider: Could not open a connection to SQL Server [2]:

Este error significa que el servicio SQL no está iniciado, o que el servidor no fue encontrado, o que no se puede hacer una conexión namedpipe usando el nombre especificado por el cliente. Para verificar esto, hacer lo siguiente:

1. Abrir una línea de comandos.

2. Revisar si la instancia SQL está presente, ejecutando:

sc query mssqlserver
-o-
sc query mssql$nombreinstancia

3. Abrir el SQL Server Configuration Manager y revisar el estado del servicio SQL. Si no ha iniciado, hacerlo. Si falla al iniciarlo, revisar el log de eventos de Windows o el log de errores de SQL para ver cuál ha sido el problema.

4. Si el servicio SQL está iniciado OK y están habilitados los protocolos Shared Memory/Named Pipe, intentar una conexión a la instancia local por omisión:

osql /Snp:.pipesqlquery
-o-
osql /Snp:.pipemssql$nombreinstanciasqlquery

5. Si sigue el mismo error, asegurarse (una vez más) que el servidor está iniciado y escuchando en el namedpipe (si se ha habilitado NP). Para esto revisar el log de errores de SQL Server buscando las palabras:

Server named pipe provider is ready to accept connection on [ .pipesqlquery ] or [.pipemssql$instanciasqlquery]

Observar que "sqlquery" es el NP por omisión, por lo que se necesita saber exactamente en cuál NP está escuchando el servidor, si se cambió el valor por omisión.

6. Revisar el string de conexión. Ver si explícitamente se especificó en el string de conexión un NP y si coincide con el que el servidor tiene definido para escuchar. En el cliente usar el SQL Server Configuration Manager, click en las propiedades de Named Pipe del cliente, revisar si el NP coincide con el que usa el servidor SQL.

 

[SQL Native Client]Named Pipes Provider: Could not open a connection to SQL Server [233]:

Para resolver esto, la primera manera consiste en reemplazar el nombre del servidor por el nombre de máquina, o ".", o "(local)", o "nombremaquina" y la conexión deberá funcionar si el servidor está escuhando a través de Shared Memory. La segunda manera consiste en habilitar Named Pipe en el servidor (usar el Configuration Manager y reiniciar el servicio).

 

[SQL Native Client]Named Pipes Provider: No process is on the other end of the pipe:

Si el error se produce al hacer una conexión local, especificar en el string de conexión el nombre del servidor usando 127.0.0.1 o la dirección IP y usar Named Pipe. Para resolver el problema, o bien usar Named Pipe o bien usar el nombre de máquina en el string de conexión al identificar el servidor.

Si el error se produce al hacer una conexión remota a otro servidor, posiblemente el servidor no está escuchando en Named Pipe. Para resolver el problema, habilitar NP en el servidor remoto y reiniciar el servicio remoto.

 

[SQL Native Client]SQL Network Interfaces: Server doesn't support requested protocol [xFFFFFFFF]:

Si el error se produce al hacer una conexión local, posiblemente se especificó en el string de conexión el prefijo de protocolo "np:" intentando conectar a una instancia con nombre y NP no está habilitado. Si el error se produce al hacer una conexión remota a otro servidor, el servidor remoto tiene NP no habilitado.

Para resolver el problema habilitar NP en la instancia (local o remota) a la que se desea conectar.

 

[SQL Native Client]SQL Network Interfaces: Error Locating Server/Instance Specified [0xFFFFFFFF]:

Se intentó conectar a una instancia especificando explícitamente los prefijos de protocolo “tcp:” o “np:” en el string de conexión, pero el servicio SQLBrowser no está iniciado. Para resolver esto, iniciar el servicio SqlBrowser en el servidor al que se desea conectar.

Usar el comando de línea NET START, con permisos de Administrator:

net start sqlbrowser

También se puede usar el SQL Server Configuration Manager, seleccionar el servicio sqlBrowser, click en Propiedades, Advanced, Active. Verificar que el servicio está iniciado y también activo.

 

[SQL Native Client]Shared Memory Provider: Could not open a connection to SQLServer [2]:

Posiblemente en el string de conexión se especificó "." "(local)" "localhost", se está usando protocolo Shared Memory y el servidor no está escuchando en Shared Memory. Para resolver este error habilitar el protocolo Shared Memory en el servidor y reniciar el servicio SQL.

 

[SQL Native Client]SQL Network Interfaces: Cannot open a Shared Memory connection to a remote SQL server [87]:

Se intentó conectar a una instancia especificando explícitamente los prefijos de protocolo “tcp:” o “np:” en el string de conexión, pero el servicio SQLBrowser no está iniciado. Para resolver esto, iniciar el servicio SqlBrowser en el servidor al que se desea conectar.

Usar el comando de línea NET START, con permisos de Administrator:

net start sqlbrowser

También se puede usar el SQL Server Configuration Manager, seleccionar el servicio sqlBrowser, click en Propiedades, Advanced, Active. Verificar que el servicio está iniciado y también activo.

 

[SQL Native Client]Unable to complete login process due to delay in opening server connection:

Revisar en el string de conexión si hay espacios en blanco después del nombre de instancia, por ejemplo:

osql /S"nombremaquina ombreinstancia " /E

De ser eso, simplemente quitar los espacios en blanco: "nombremaquina ombreinstancia".

Otra posibilidad es que se esté intentando una conexión remota indicando el nombre de un servidor y WINS está inhabilitado en la máquina cliente. Para resolver esto, habilitar en la máquina cliente la opción “File and Printer Sharing” y usar explícitamente el protocolo NP. Otra posibilidad es aumentar el timeout de conexión a unos 30 segundos.

 

Por motivos de firewall:

cuando la conexión es bloqueada por algún firewall. Para resolver el problema hacer lo siguiente:

1. Habilitar el servicio SqlBrowser. Además agregar a sqlbrowser.exe como excepción en el firewall.

2. Agregar el puerto tcp (normalmente es el 1433) como excepción en el firewall. Por ejemplo: Name-1433:TCP, Value-1433:TCP:*:Enabled:Tcp 1433.


 

 

(Este articulo, está realizado gracias a la colaboración de Gustavo Larriera y Blogs del msdn ). Fuente: http://blogs.msdn.com/sql_protocols/archive/2005/10/22/483684.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.

publicado por normanmpardell a las 14:55 · Sin comentarios  ·  Recomendar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
img
.Sobre mí
FOTO

Norman M. Pardell

MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)

» Ver perfil

img
.Secciones
» Inicio
img
.Enlaces
» Microsoft MSDN Foros
» Windows Server 2012
img
.Más leídos
» Asignar la cantidad correcta de Memoria para SQL Server
» Base de Datos Sospechosa (Suspect)
» Como modificar la Intercalación (Collation) en SQL Server
» Como renombrar una instancia de SQL Server. sp_dropserver. sp_addserver
» Detectar bloqueos. SQL Server V.2005 y superiores
» Funciones SQL Server. Funciones escalares y funciones con valores de tabla.
» Integridad y corrupción en las bases de datos: DBCC CHECKDB
» Log de transacciones ( .ldf ). SQL Server.
» Migrando SQL Server 2005, 2008, 2008 R2 a SQL Server 2012
» Transacciones activas. SQL server 2008
img
.Nube de tags [?]
                                                           
img img
FULLServices Network | Crear blog | Privacidad