Cómo configurar y solucionar problemas de un servidor vinculado a una base de datos de Oracle en SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 280106 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo paso a paso describe cómo configurar un servidor vinculado desde un equipo que ejecuta Microsoft SQL Server a una base de datos de Oracle y también proporciona los pasos de solución de problemas básicos para errores comunes que pueden surgir al configurar un servidor vinculado a Oracle.

Pasos para configurar un servidor vinculado a Oracle

  1. Debe instalar el software cliente de Oracle en el equipo que ejecuta SQL Server que está configurado el servidor vinculado.
  2. Instale al controlador que desee en el equipo que ejecuta SQL Server. Microsoft sólo admite proveedor Microsoft OLE DB para Oracle y Microsoft ODBC Driver para Oracle. Si utiliza un proveedor de terceros o un controlador de terceros para conectarse a Oracle, debe ponerse en contacto con el proveedor respectivo para los problemas que puede experimentar con su proveedor o controlador.
  3. Si utiliza el proveedor Microsoft OLE DB para Oracle y Microsoft ODBC Driver para Oracle, considere lo siguiente:
    • Tanto el proveedor de OLE DB y el controlador ODBC que se incluyen con Microsoft Data Access Components (MDAC) requieren SQL * NET 2.3. x o una versión posterior. Debe instalar Oracle 7.3. software de cliente x o una versión posterior, en el equipo cliente. El equipo cliente es el equipo que ejecuta SQL Server.
    • Asegúrese de que tiene MDAC 2.5 o una versión posterior, instalado en el equipo está ejecutando SQL Server. Con MDAC 2.1 o con una versión anterior, no puede conectarse a bases de datos que usan Oracle 8. x o una versión posterior.
    • Para habilitar MDAC 2.5 o posterior trabajar con Oracle software de cliente, el registro debe modificarse en el equipo cliente que está ejecutando SQL Server como se indica en la tabla siguiente.
                 Microsoft Windows NT,
      Oracle     Microsoft Windows 95,
      Client     Windows 98, and Windows 98 SE    Microsoft Windows 2000 
      --------------------------------------------------------------------------
      
      7.x        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE  
                 \Microsoft\TransactionServer     Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="xa73.dll"
                 "OracleXaLib"="xa73.dll"         "OracleSqlLib"="SQLLib18.dll"
                 "OracleSqlLib"="SQLLib18.dll"    "OracleOciLib"="ociw32.dll"
                 "OracleOciLib"="ociw32.dll"   
      
      8.0        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE
                 \Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="xa80.dll"
                 "OracleXaLib"="xa80.dll"         "OracleSqlLib"="sqllib80.dll" 
                 "OracleSqlLib"="sqllib80.dll"    "OracleOciLib"="oci.dll"
                 "OracleOciLib"="oci.dll" 
      
      8.1        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE
                 \Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="oraclient8.dll" 
                 "OracleXaLib"="oraclient8.dll"   "OracleSqlLib"="orasql8.dll"  
                 "OracleSqlLib"="orasql8.dll"     "OracleOciLib"="oci.dll"
                 "OracleOciLib"="oci.dll"
  4. Reinicie el equipo que ejecuta SQL Server después de instalar el software cliente de Oracle.
  5. On the computer that is running SQL Server, set up a linked server by using the following script.
    -- Adding linked server (from SQL Server Books Online):
    /* sp_addlinkedserver [@server =] 'server' 
        [, [@srvproduct =] 'product_name']
        [, [@provider =] 'provider_name'] 
        [, [@datasrc =] 'data_source'] 
        [, [@location =] 'location'] [, [@provstr =] 'provider_string'] 
        [, [@catalog =] 'catalog']
    */ 
    
    EXEC sp_addlinkedserver   'Ora817Link',  'Oracle',  'MSDAORA',  'oracle817'
    
    -- Adding linked server login:
    /* sp_addlinkedsrvlogin [@rmtsrvname =] 'rmtsrvname'
        [,[@useself =] 'useself']
        [,[@locallogin =] 'locallogin']
        [,[@rmtuser =] 'rmtuser']
        [,[@rmtpassword =] 'rmtpassword']
    */ 
    
    EXEC sp_addlinkedsrvlogin 'Ora817Link', 'FALSE',NULL, 'scott', 'tiger'
    
    -- Help on the linked server:
    EXEC sp_linkedservers
    EXEC sp_helpserver
    select * from sysservers
Nota Si utiliza Microsoft ODBC Driver para Oracle, puede utilizar el @ datasrc parámetro para especificar un nombre de DSN. Para un DSN - menos conexión, se suministra la cadena de proveedor mediante la @ provstr parámetro. Con Microsoft OLE DB Provider for Oracle, utilice el alias de servidor de Oracle que está configurado en el archivo TNSNames.Ora para el @ datasrc parámetro. Para obtener más información, vea el tema "sp_addlinkedserver" en los libros en pantalla de SQL Server.

Mensajes de error comunes y cómo solucionarlos

importante Esta sección, el método o la tarea contiene pasos que indican cómo modificar el registro. Sin embargo, pueden producirse problemas graves si modifica incorrectamente el registro. Por tanto, asegúrese de que siga estos pasos cuidadosamente. Realice una para agregar protección, copia de seguridad del registro antes de modificarlo. A continuación, puede restaurar el registro si se produce un problema. Para obtener más información acerca de cómo realizar una copia de seguridad y restaurar el registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
322756Cómo realizar una copia de seguridad y restaurar el registro de Windows


Puede utilizar cualquiera de los dos métodos siguientes para recuperar información extendida sobre cualquier error que experimenta al ejecutar una consulta distribuida.
  • método 1
    En el Analizador de consultas, ejecute el código siguiente para activar la marca de seguimiento 7300.
    DBCC Traceon(7300)
  • método 2
    Capturar el evento "OLEDB errores" que se encuentra en la categoría de sucesos "Errores y advertencias" en el Analizador de SQL. El formato mensaje de error es la siguiente:
    Interface::Method falló con código de error hexadecimal.
    Puede buscar código de error hexadecimal en el archivo Oledberr.h que se incluye con Kit de desarrollo de software (SDK) de MDAC.
El siguiente es una lista de diez mensajes de error comunes que pueden producirse, junto con información acerca de cómo solucionar la mensaje de error.

Nota Si está utilizando SQL Server 2005, estos mensajes de error pueden ser ligeramente diferentes. Sin embargo, los identificadores de error de estos mensajes de error son igual de ellos en SQL Server 2000. Por tanto, se puede identificar por el ID de error.

Nota Para problemas relacionados con el rendimiento, busque el tema "Optimizar consultas distribuidas" en libros en pantalla de SQL Server.
  • mensaje 1
    Error 7399: Proveedor OLE DB '% 1!' informa de un error. % ls
    Activar el indicador de seguimiento 7300 o el uso del Analizador de SQL para capturar el evento "OLEDB errores" para recuperar información de error OLEDB extendido.
  • mensaje 2a
    "ORA-12154: TNS: no se pudo resolver el servicio de nombre"
    mensaje 2b
    "No se encontraron los componentes de cliente y red de Oracle (tm). Estos componentes son proporcionados por Oracle Corporation y forman parte de la versión 7.3.3 de Oracle (o posterior) instalación de software de cliente "
    Para obtener más información acerca de cómo resolver problemas de conectividad de Oracle, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    259959Técnicas para depurar problemas de conectividad a un servidor de Oracle mediante el controlador ODBC y OLE DB
  • mensaje 3
    Error 7302: No se pudo crear una instancia de proveedor de OLE DB 'MSDAORA'
    Asegúrese de que el archivo MSDAORA.dll está registrado correctamente. (El archivo MSDAORA.dll es el proveedor Microsoft OLE DB para Oracle archivo). Utilice RegSvr32.exe para registrar el proveedor Microsoft OLE DB para Oracle. Si falla el registro, vuelva a instalar Data Access Components (MDAC). Para obtener más información acerca de MDAC, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/data/Default.aspx
    Nota Si utiliza un proveedor de Oracle de terceros y su proveedor de Oracle no puede ejecutar fuera de proceso de SQL Server, habilitarla ejecutar en proceso cambiando las opciones de proveedor. Para cambiar las opciones de proveedor, utilice uno de los métodos siguientes.
    • método 1
      Busque la siguiente clave del registro. A continuación, cambie el valor de la entrada AllowInProcess (DWORD) a 1. Esta clave del registro se encuentra en el nombre del proveedor correspondiente:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • método 2
      Establezca la opción Permitir InProcess directamente mediante el Administrador corporativo de SQL Server cuando se agrega un nuevo servidor vinculado. Haga clic en Opciones del proveedor y, a continuación, haga clic en casilla de verificación Permitir InProcess .
  • mensaje 4
    Error 7303: No se pudo inicializar objeto de origen de datos del proveedor OLE DB 'MSDAORA'. [Proveedor OLE/DB devolvió el mensaje: ORA-01017: contraseña de nombre de usuario no válida; inicio de sesión denegado] Traza de error de OLE DB [IDBInitialize:: Initialize de proveedor OLE/DB 'MSDAORA' devolvió 0x80040e4d].
    Este mensaje de error indica que el servidor vinculado no tiene asignación de inicio de sesión correcto. Puede ejecutar el procedimiento sp_helplinkedsrvlogin almacenados para establecer correctamente la información de inicio de sesión. Además, compruebe que ha especificado los parámetros correctos para la configuración de servidor vinculado.
  • mensaje 5
    Error 7306: No se puede abrir tabla '% 1!' de proveedor OLE DB 'MSDAORA'. La tabla especificada no existe. [Proveedor OLE/DB devolvió el mensaje: no existe la tabla.][Proveedor OLE/DB devolvió el mensaje: ORA-00942: no existe tabla o vista] Traza de error de OLE DB [IOpenRowset:: OpenRowset de proveedor OLE/DB 'MSDAORA' devuelto 0x80040e37: la tabla especificada no existe.].
    Error 7312: Uso no válido de esquema o catálogo para el proveedor OLE DB '% ls'. Se ha suministrado un nombre de cuatro partes, pero el proveedor no expone las interfaces necesarias para utilizar un catálogo o esquema.
    Error 7313: Esquema no válido o catálogo especificado para el proveedor '% ls'.
    Error 7314: OLE DB ¡ el proveedor ' % 1! ' no contiene tabla '% ls'
    Si recibe estos mensajes de error, una tabla puede faltar en el esquema Oracle o que no tenga permisos en dicha tabla. Compruebe que el nombre del esquema se ha escrito utilizando mayúsculas. Debe ser el caso de alfabético de la tabla y de las columnas como se especifica en las tablas de sistema de Oracle.

    En el lado de Oracle, una tabla o una columna que se crea sin comillas dobles se almacena en mayúsculas. Si la tabla o la columna está encerrada entre comillas dobles, la tabla o la columna se almacena como está.

    La llamada siguiente se muestra si la tabla existe en el esquema Oracle. Esta llamada también muestra el nombre de tabla exacta.
    sp_tables_ex  @table_server=Ora817Link, @table_schema='your_schema_name'
    Para obtener más información acerca de mensaje de error 7306, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    240340Consulta distribuida de SQL con Oracle genera error "No se puede abrir la tabla"
  • mensaje 6
    Error 7413: No se pudo realizar un inicio de sesión autenticado de Windows NT porque delegación no está disponible.
    Msj 18456, nivel 14, estado 1, línea 1 conexión error para el usuario ' \ '.
    La información siguiente es de los libros en pantalla de SQL Server:
    Este mensaje de error indica que se está intentando ejecutar de una consulta distribuida Microsoft Windows autenticado el inicio de sesión sin una asignación explícita del inicio de sesión. En un entorno de sistema operativo en la seguridad no se admite delegación, Windows autenticados inicios de sesión necesita una asignación explícita a un inicio de sesión remoto y una contraseña creados mediante sp_addlinkedsrvlogin .
  • mensaje 7
    Error 7354: OLE DB 'MSDAORA' proporcionado no válido metadatos del proveedor para la columna '% ls'. No se admite el tipo de datos.
    Si recibe este mensaje de error, puede estar experimentando el error descrita en el siguiente artículo de Microsoft Knowledge Base:
    243027REVISIÓN: Columna numérico de Oracle produce error 7354
  • mensaje 8
    Error 7356: OLE DB 'MSDAORA' proporcionado incoherente metadatos del proveedor para una columna. Información de metadatos cambió en tiempo de ejecución.
    Si la consulta de servidor vinculado utiliza una vista de Oracle, puede estar experimentando el problema que se describe en el siguiente artículo de Knowledge Base:
    251238Las consultas distribuidas devuelven error 7356 con MSDAORA
  • mensaje 9
    Error 7391: No se pudo realizar la operación porque el proveedor OLE DB 'MSDAORA' no admite transacciones distribuidas. Traza de error de OLE DB [proveedor OLE DB 'MSDAORA' ITransactionJoin::JoinTransaction devuelto 0x8004d01b]
    Compruebe que las versiones OCI están registradas correctamente como se describe anteriormente en este artículo.

    Nota Si las entradas del registro son correctas todas, se carga el archivo MtxOCI.dll. Si no está cargado el archivo MtxOCI.dll, no puede realizar transacciones distribuidas en Oracle mediante el proveedor Microsoft OLE DB para Oracle o mediante el controlador ODBC de Microsoft para Oracle. Si está utilizando un proveedor de terceros y recibirá el error 7391, compruebe que el proveedor OLE DB que está utilizando admite transacciones distribuidas. Si el proveedor OLE DB admite transacciones distribuidas, compruebe que el Coordinador de transacciones distribuidas de Microsoft (MSDTC) está en ejecución.
  • mensaje 10
    Error 7392: No se pudo iniciar una transacción de proveedor de OLE DB 'MSDAORA'. Traza de error de OLE DB [proveedor OLE/DB 'MSDAORA' ITransactionLocal:: StartTransaction devuelto 0x8004d013: ISOLEVEL = 4096].
    La información siguiente es de los libros en pantalla de SQL Server:
    El proveedor OLE DB devuelto error 7392 porque puede estar activa sólo una transacción para esta sesión. Este error indica que se está intentando una instrucción de modificación de datos de un proveedor OLE DB cuando la conexión está en una transacción explícita o implícita, y el proveedor OLE DB no admite transacciones anidadas. SQL Server requiere esta compatibilidad para que, en determinadas condiciones de error, pueden terminar los efectos de la instrucción de modificación de datos mientras continúa con la transacción.
    Si SET XACT_ABORT es ON, SQL Server no requiere la compatibilidad de transacciones anidadas del proveedor OLE DB. Por lo tanto, debe ejecutar SET XACT_ABORT ON antes de ejecutar las instrucciones de modificación de datos con tablas remotas en una transacción implícita o explícita. Para ello en caso de que el proveedor OLE DB que utilizas no admite transacciones anidadas.

Referencias

Para obtener más información, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
244661Limitaciones del controlador ODBC de Oracle de Microsoft y el proveedor OLE DB
259959Técnicas para depurar problemas de conectividad a un servidor de Oracle mediante el controlador ODBC y OLE DB
239719Compatibilidad del proveedor de controlador/OLE DB de Microsoft ODBC para Oracle w.r.t Oracle 8.x
193893Información acerca de cómo utilizar Oracle con componentes COM + y Microsoft Transaction Server
191168Error no se pudo dar de alta en la transacción del objeto de llamada "-2147168246 (8004d00a)"
Para obtener más información acerca de cómo utilizar un servidor vinculado junto con DB2, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
218590Configurar orígenes de datos para el proveedor Microsoft OLE DB para DB2
216428Configurar el controlador ODBC de Microsoft para DB2

Propiedades

Id. de artículo: 280106 - Última revisión: viernes, 23 de diciembre de 2005 - Versión: 7.7
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Palabras clave: 
kbmt kbhowtomaster KB280106 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 280106

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com