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

 

 

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

img
img
08 de Marzo, 2011 · InstcatSQL

Mensaje de error con consultas distribuidas desde SQL 2005 y 2008 64 bits a SQL 2000 32 bits

 El problema surge cuando se intenta ejecutar consultas distribuidas usando servidores  vinculados desde un servidor de 64 bits (SQL Server 2008 o SQL Server 2005) a otro que sea SQL Server 2000 de 32 bits.

 

 Puede obtener el error:

El proveedor OLE DB "SQLNCLI10" del servidor vinculado "<linkedservername>" devolvió el mensaje "Error no especificado".
El proveedor OLE DB "SQLNCLI10" del servidor vinculado "<linkedservername>" devolvió el mensaje "No se puede encontrar en el servidor el procedimiento almacenado necesario para completar esta operación. Póngase en contacto con el administrador del sistema.".

Mens 7311, Nivel 16, Estado 2, Procedimiento V_OtrasAtenciones, Línea 3
No se puede obtener el conjunto de filas de esquema "DBSCHEMA_TABLES_INFO" para el proveedor OLE DB "SQLNCLI10" del servidor vinculado "<linkedservername>".
El proveedor admite la interfaz, pero devuelve un código de error cuando se usa.

 El problema y la solución no están en el motor de 64 bits, sino en el SQL 2000 de 32 bits. El error de sintaxis es debido a cuando se realiza una consulta a un procedimiento almacenado, usando el linked Server, lo tratara como si de una tabla se tratase. Si estáis ante este escenario, como ejemplo, podéis ver que SYSREMOTE_CATALOGS es un procedimiento almacenado, no una tabla. Ejecutar "exec sp_help 'SYSREMOTE_CATALOGS' para verlo vosotros mismos.

 

 Para solucionar este problema, si no ha actualizado su SQL Server 2000 a SP3 o SP4, hágalo. Una vez este instalado, nos dejara el script instcat.sql, que debemos ejecutar (en su SQL Server 2000). De forma predeterminada, este script se encontrará en la carpeta c:>Archivos de programa>Microsoft SQL Server>Mssql>Install. Después de ejecutar la secuencia de comandos Instcat.SQL, se generan muchos mensajes. El último mensaje indica si la secuencia de comandos se ejecutó correctamente.

 

 Instcat.sql > También actualizar el catálogo ODBC de procedimientos almacenados en el equipo SQL Server.

 

 Para ejecutar el script instcat.sql puede usar osql. La utilidad osql es una utilidad de símbolo del sistema de Microsoft Windows 32 que puede utilizarse para ejecutar instrucciones de Transact-SQL y archivos de comandos. La utilidad osql utiliza la interfaz de programación de aplicaciones (API) de la base de datos ODBC para comunicarse con el servidor

 

 Os paso a modo de ejemplo como se ejecutaría desde un “CMD”:

 

Modo con autenticación Windows

 

Para una instancia predeterminada:

osql -E -S <ServerName> -i <Location>instcat.sql

 

Para una instancia con nombre:

osql -E -S <ServerName><InstanceName> -i <Location>instcat.sql

 

Modo con autenticación de SQL Server

 

Para una instancia predeterminada:

osql -U <AdminLogin> -P <AdminPassword> -S <ServerName> -i <Location>instcat.sql

 

Para una instancia con nombre:

 

osql -U <AdminLogin> -P <AdminPassword> -S <ServerName><InstanceName> -i <Location>instcat.sql

 

 

 

 Es possible que se produzca algún error durante la ejecución del script instcat.sql, tales como:

 

En la línea 8320 me muestra el error

Servidor: mensaje 170, nivel 15, estado 31, procedimiento sp_catalogs, línea 7
Línea 7: sintaxis incorrecta cerca de '<'.

 

 Por no tomar la variable <@server_name>, en este caso, sustituirla por el nombre del servidor, en:

 

create procedure sp_catalogs(

    @server_name        sysname)

as

    select

        CATALOG_NAME,

        convert (nvarchar(255),DESCRIPTION)

    from master.dbo.SYSREMOTE_CATALOGS

    < @server_name >

    order by CATALOG_NAME

go

grant execute on sp_catalogs to public

go

 

 

 

 

Fuentes:

Microsoft

MSDN

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 20:24 · 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