locked
Vincular Servidor SQL Server 2008 con Servidor SQL Server 2000 RRS feed

  • Pregunta

  • Buen dia, mi problema es el siguiente:

    Tengo 2 servidores, el 1ero con Windows Server 2008 y SQL Server 2008, el 2do con Windows Server 2003 y SQL server 2000 SP4. Desde el Managment Studio 2008 estoy tratando de vincular el servidor con MSSQL2000.

    Una vez vinculo el servidor 2000 al 2008 por medio de diferentes formas (que describo mas adelante y que aparentemente se realizan con éxito), trato de hacer una consulta desde el MS2008 donde uno de los from apunta a una tabla del MSSQL2000 y esta me arroja el siguiente mensaje:

     - El proveedor OLE DB "SQLNCLI10" del servidor vinculado "IPSSERVER2" devolvió el mensaje "Error no especificado".
    -  El proveedor OLE DB "SQLNCLI10" del servidor vinculado "IPSSERVER2" 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 "IPSSERVER2". El proveedor admite la interfaz, pero devuelve un código de error cuando se usa.

    Empiezo por indicar los parámetros de los servidores:

    Bien aqui describo los métodos que he empleado para realizar la vinclación:

    1 - Lo hice por el entorno gráfico en la carpeta Objetos de servidor - Nuevo - Servidor Vinculado. Al hacerlo de esta forma me muestra el servidor que vinculé y sus respectivas bases de datos.

    2 - Mediante el script

    EXEC sp_addlinkedserver
    @server='IPSSERVER2',
    @srvproduct='',
    @provider='SQLNCLI',
    @datasrc='192.168.7.121'
    
    EXEC sp_addlinkedsrvlogin 'IPSSERVER2',
    'false', NULL, 'sa', 'sa1234'
    
    exec sp_linkedservers
    El cual también me mostró el servidor conectado y configurado con sus Bases de datos, tablas y vistas.


    He leído en otro Hilo que se debe actualizar el SQL Server 2000 con el SP4 pero como indiqué en un principio el mio ya esta actualizado con ese SP y el problema persiste. Espero haber sido los suficientemente específico y que me puedan ayudar. En caso de necesitar datos mas puntuales por favor me avisan.

    De antemano muchas gracias!!

    jueves, 13 de agosto de 2009 19:12

Respuestas

Todas las respuestas

  • Con el SP4 de SQL Server 2000 se incluye un script denominado 'Instcat.SQL'.
    Ejecútelo manualmente en el servidor IPSSERVER2 (usando osql.exe o el Query Analyzer).
    Díganos si eso le solucionó el problema.


    Gustavo Larriera, MVP --- Este mensaje se proporciona tal como es, sin garantías de ninguna clase. ---
    jueves, 13 de agosto de 2009 19:33
    Moderador
  • Hola.

    Yo probaría lo del siguiente link: http://support.microsoft.com/?scid=kb;en-us;906954&x=16&y=11. Aunque es para SQL Server 2005, el servidor de destino, que es el que hay que actualizar es de 2000, y se ajusta bastante a tu mensaje de error.


    Alberto López Grande.
    jueves, 13 de agosto de 2009 19:33
    Moderador
  • Buen dia Gustavo, de antemano agradezco la ayuda.

    Tengo una duda acerca del script

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

    Al revisar el sript encuentro lo siguiente

    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
    Mi duda es, debo cambiar la variable @server_name por el nombre de mi servidor? lo puedo hacer poniendo la dirección IP en vez del nombre? si pongo el nombre o la IP debo quitar los signos "<" y ">"?

    Muchas gracias por la ayuda....
    viernes, 14 de agosto de 2009 13:38
  • Hola.

    Con el permiso de Gustavo (y el tuyo), voy a tratar de contestarte yo (en el fondo, ambos te dijimos lo mismo, yo te pasé el KB y él te pasó el resumen con lo que hay que hacer). Por lo que parece, tu problema se debe a que tratas de vincular un servidor de 64 bits (SQL Server 2008) con otro que es SQL Server 2000 y 32 bits. No lo sé, es una sospecha dados los mensajes de error que recibes, que ya me han ocurrido unas pocas veces. No se me ha dado el caso aún con un SQL Server 2008, (los SQL Server 2000 que aún me quedan ya los arreglé hace tiempo) pero no creo que exista diferencia alguna, ya que el problema y la solución no están en el motor de 64 bits, sino en el SQL 2000 de 32 bits.

    No debes sustituir nada, has de ejecutar el script tal cual. Es algo curioso, si verificas la sintaxis, obtienes errores, pero si ejecutas el script funciona y te resuelve el problema.

    El error de sintaxis es por la utilización de una forma que "sólo vale" para procedimientos de sistema, como es el hecho de realizar una consulta a un procedimiento almacenado como si se tratara de una tabla (sí, SYSREMOTE_CATALOGS es un procedimiento almacenado, no una tabla, ejecuta "exec sp_help 'SYSREMOTE_CATALOGS' para verlo por ti mismo). 

    Resumiendo, ejecuta el script. Si el error persiste, nos dices.


    Alberto López Grande.
    viernes, 14 de agosto de 2009 14:56
    Moderador
  • Tiene toda la razón Alberto, efectivamente corrí el Script y terminó correctamente, ya hice la prueba con una consulta desde mi MSS2008 al MSSQL2000 y la realizó correctamente. Agradezco mucho su ayuda y la de Gustavo.
    viernes, 14 de agosto de 2009 16:46