DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 280106 - Dernière mise à jour: jeudi 12 mai 2011 - Version: 8.0

Important Cet article contient des informations sur la modification du Registre. Avant de modifier le Registre, pensez à le sauvegarder et assurez-vous que vous savez le restaurer en cas de problème. Pour plus d'informations sur la sauvegarde, la restauration et la modification du Registre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
256986  (http://support.microsoft.com/kb/256986/ ) Description du Registre de Microsoft Windows

Sommaire

Résumé

Cet article décrit étape par étape comment configurer un serveur lié à partir d'un ordinateur Microsoft SQL Server vers une base de données Oracle et fournit également des étapes de dépannage de base pour les erreurs courantes que vous pouvez rencontrer lors de la configuration d'un serveur lié à une base de données Oracle.

Étapes pour configurer un serveur lié à Oracle

  1. Vous devez installer le logiciel client Oracle sur l'ordinateur SQL Server où le serveur lié est configuré.
  2. Installez le pilote souhaité sur l'ordinateur SQL Server. Microsoft prend en charge uniquement le fournisseur Microsoft OLE DB pour Oracle et le pilote ODBC Microsoft pour Oracle. Si vous utilisez un fournisseur tiers ou un pilote de fournisseurs tiers pour vous connecter à Oracle, vous devez contacter le fabricant en cas de problème lors de l'utilisation du fournisseur ou du pilote.
  3. Si vous utilisez le fournisseur Microsoft OLE DB pour Oracle et le pilote ODBC Microsoft pour Oracle, considérez les points suivants :
    • Le fournisseur OLE DB et le pilote ODBC fournis avec MDAC (Microsoft Data Access Components) requièrent SQL*Net 2.3.x ou version ultérieure. Vous devez installer le logiciel client Oracle 7.3.x ou version ultérieure sur l'ordinateur client. L'ordinateur client est l'ordinateur qui exécute SQL Server.
    • Assurez-vous que MDAC 2.5 ou version ultérieure est installé sur l'ordinateur SQL Server. Avec MDAC 2.1 ou version antérieure, vous ne pouvez pas vous connecter à des bases de données qui utilisent Oracle 8.x ou version ultérieure.
    • Pour permettre à MDAC 2.5 ou version ultérieure d'utiliser le logiciel client Oracle, le Registre doit être modifié sur l'ordinateur client SQL Server comme indiqué dans le tableau suivant.
                 Microsoft Windows NT,
      Client     Microsoft Windows 95,
      Oracle     Windows 98 et Windows 98 Deuxième Édition    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. Redémarrez l'ordinateur SQL Server après avoir installé le logiciel client Oracle.
  5. Sur l'ordinateur SQL Server, configurez un serveur lié au moyen du script suivant.
    -- 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
Remarque Si vous utilisez le pilote ODBC Microsoft pour Oracle, vous pouvez utiliser le paramètre @datasrc pour spécifier un nom DSN. Pour une connexion sans DSN, la chaîne de fournisseur est fournie par le biais du paramètre @provstr. Avec le fournisseur Microsoft OLE DB pour Oracle, utilisez l'alias de serveur Oracle configuré dans le fichier TNSNames.Ora pour le paramètre @datasrc. Pour plus d'informations, reportez-vous à la rubrique « sp_addlinkedserver » dans la documentation en ligne de SQL Server.

Messages d'erreurs courants et procédures à suivre pour les dépanner

Avertissement Toute modification incorrecte du Registre à l'aide de l'Éditeur du Registre ou d'une autre méthode peut entraîner des problèmes sérieux. Ces problèmes peuvent vous obliger à réinstaller votre système d'exploitation. Microsoft ne peut pas garantir que ces problèmes puissent être résolus. Vous assumez l'ensemble des risques liés à la modification du Registre.

Vous pouvez appliquer l'une ou l'autre des deux méthodes suivantes pour récupérer des informations détaillées à propos de toute erreur que vous rencontrez lors de l'exécution d'une requête distribuée.
  • Méthode 1
    Dans l'Analyseur de requête, exécutez le code suivant pour activer l'indicateur de trace 7300.
    DBCC Traceon(7300)
  • Méthode 2
    Capturez l'événement « Erreurs OLEDB » qui se trouve dans la catégorie d'événements « Erreurs et avertissements » dans le Générateur de profils SQL. Le format de message d'erreur est le suivant :
    Interface::Method failed with hex-error code (Interface::échec de la méthode avec code d'erreur hexa.)
    Vous pouvez rechercher le code d'erreur hexa dans le fichier Oledberr.h fourni avec le Kit de développement logiciel MDAC.
Vous trouverez ci-dessous une liste de dix messages d'erreur courants qui peuvent apparaître, avec des informations relatives au dépannage.

Remarque Si vous utilisez SQL Server 2005, ces messages d'erreur peuvent être légèrement différents. Toutefois, les ID d'erreurs de ces messages d'erreur sont identiques à ceux de SQL Server 2000. Par conséquent, vous pouvez les identifier par leur ID d'erreur.

Remarque Pour les problèmes liés aux performances, recherchez la rubrique « Optimisation des requêtes distribuées » dans la documentation en ligne de SQL Server.
  • Message 1
    Erreur 7399 : Le fournisseur OLE DB '%1!' rapporte une erreur. %ls
    Activez l'indicateur de trace 7300 ou utilisez le Générateur de profils SQL pour capturer l'événement « Erreurs OLEDB » afin de récupérer des informations d'erreur OLEDB étendues.
  • Message 2a
    « ORA-12154 : TNS:could not resolve service name (TNS : impossible de résoudre le nom du service »)
    Message 2b
    « Les composants client et réseau Oracle sont introuvables. Ces composants sont fournis par Oracle Corporation et font partie de l'installation logicielle client Oracle Version 7.3.3 (ou version ultérieure) »
    Pour plus d'informations sur la façon de résoudre des problèmes de connectivité Oracle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    259959  (http://support.microsoft.com/kb/259959/ ) Techniques pour résoudre les problèmes de connectivité sur un serveur Oracle à l'aide du pilote ODBC et du fournisseur OLE DB
  • Message 3
    Erreur 7302 : Impossible de créer une instance du fournisseur OLE DB 'MSDAORA'
    Assurez-vous que le fichier MSDAORA.dll est inscrit correctement. (Le fichier MSDAORA.dll est le fournisseur Microsoft OLE DB pour le fichier Oracle.) Utilisez RegSvr32.exe pour inscrire le fournisseur Microsoft OLE DB pour Oracle. Si l'inscription échoue, réinstallez Microsoft Data Access Components (MDAC). Pour plus d'informations sur MDAC, reportez-vous au site Web MSDN (Microsoft Developer Network) à l'adresse suivante (en anglais) :
    http://msdn.microsoft.com/data/Default.aspx (http://msdn.microsoft.com/data/Default.aspx)
    Remarque Si vous utilisez un fournisseur Oracle tiers et que votre fournisseur Oracle ne peut pas s'exécuter en dehors d'un processus SQL Server, autorisez-le à s'exécuter in-process en modifiant les options du fournisseur. Pour modifier les options du fournisseur, appliquez l'une des méthodes suivantes.
    • Méthode 1
      Recherchez la clé de Registre suivante. Ensuite, affectez la valeur 1 à l'entrée (DWORD) AllowInProcess. Cette clé de Registre se trouve sous le nom de fournisseur correspondant :
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • Méthode 2
      Définissez l'option Allow InProcess directement par le biais de SQL Server Enterprise Manager lorsque vous ajoutez un nouveau serveur lié. Cliquez sur Options du fournisseur, puis activez la case à cocher Autoriser InProcess.
  • Message 4
    Erreur 7303 : Impossible d'initialiser l'objet source de données du fournisseur OLE DB 'MSDAORA.' [Le fournisseur OLE/DB a retourné le message : ORA-01017 : non d'utilisateur/mot de passe non valide ; connexion refusée] Trace de l'erreur OLE DB [Fournisseur OLE/DB 'MSDAORA' IDBInitialize::Initialize a retourné 0x80040e4d].
    Ce message d'erreur indique que le serveur lié n'a pas de mappage de connexion correct. Vous pouvez exécuter la procédure stockée sp_helplinkedsrvlogin pour définir les informations de connexion correctement. Vérifiez également que vous avez spécifié les paramètres corrects pour la configuration du serveur lié.
  • Message 5
    Erreur 7306 : Impossible d'ouvrir la table '%ls' du fournisseur OLE DB 'MSDAORA'. La table spécifiée n'existe pas. [Le fournisseur OLE/DB a retourné le message : La table n'existe pas.][Le fournisseur OLE/DB a retourné le message : ORA-00942 : la table ou la vue n'existe pas] Trace de l'erreur OLE DB [Fournisseur OLE/DB 'MSDAORA' IOpenRowset::OpenRowset a retourné 0x80040e37 : La table spécifiée n'existe pas.].
    Erreur 7312 : Utilisation non valide du schéma ou du catalogue par le fournisseur OLE DB '%ls'. Un nom en quatre parties a été donné mais le fournisseur ne met à pas disposition les interfaces requises pour utiliser le catalogue ou le schéma.
    Erreur 7313 : Schéma ou catalogue incorrect spécifié pour le fournisseur '%ls'.
    Err 7314 : Le fournisseur OLE DB '%ls' ne contient pas la table '%ls'
    Si vous recevez ces messages d'erreur, il se peut qu'une table soit manquante dans le schéma Oracle ou que vous n'ayez pas les autorisations nécessaires sur cette table. Vérifiez que le nom de schéma a été tapé en majuscule. La casse alphabétique de la table et des colonnes doit être telle que spécifiée dans les tables système Oracle.

    Du côté Oracle, une table ou une colonne créée sans guillemets doubles est stockée en majuscule. Si la table ou la colonne est placée entre guillemets doubles, elle est stockée telle quelle.

    L'appel suivant montre si la table existe dans le schéma Oracle. Il indique également le nom de table exact.
    sp_tables_ex  @table_server=Ora817Link, @table_schema='your_schema_name'
    Pour plus d'informations sur le message d'erreur 7306, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    240340  (http://support.microsoft.com/kb/240340/ ) Une requête distribuée SQL avec Oracle provoque l'erreur « Impossible d'ouvrir la table »
  • Message 6
    Erreur 7413 : Impossible d'effectuer une connexion authentifiée Windows NT parce que la délégation n'est pas disponible.
    Msg 18456, Niveau 14, État 1, Ligne 1 Échec de la connexion de l'utilisateur '\'.
    Les informations suivantes sont tirées de la documentation en ligne de SQL Server :
    Ce message d'erreur indique qu'une requête distribuée est tentée pour une connexion authentifiée Microsoft Windows sans un mappage de connexion explicite. Dans un environnement de système d'exploitation dans lequel la délégation de sécurité n'est pas prise en charge, les connexions authentifiées Windows NT nécessitent un mappage explicite à une connexion et un mot de passe distants créés à l'aide de sp_addlinkedsrvlogin.
  • Message 7
    Erreur 7354 : Le fournisseur OLE DB 'MSDAORA' a fourni une métadonnée incorrecte pour la colonne '%ls'. Le type de données n'est pas pris en charge.
    Si ce message d'erreur s'affiche, il se peut que vous rencontriez le bogue décrit dans l'article suivant de la Base de connaissances Microsoft :
    243027  (http://support.microsoft.com/kb/243027/ ) CORRECTIF : Une colonne numérique dans Oracle provoque l'erreur 7354
  • Message 8
    Erreur 7356 : Le fournisseur OLE DB 'MSDAORA' a fourni une métadonnée incohérente pour la colonne. Le nom a été changé au moment de l'exécution.
    Si votre requête de serveur lié utilise un affichage Oracle, vous pouvez rencontrer le problème décrit dans l'article suivant de la Base de connaissances Microsoft :
    251238  (http://support.microsoft.com/kb/251238/ ) Les requêtes distribuées retournent l'erreur 7356 avec MSDAORA
  • Message 9
    Erreur 7391 : L'opération demandée ne peut pas être effectuée parce que le fournisseur OLE DB 'MSDAORA' ne prend pas en charge les transactions distribuées. Trace de l'erreur OLE DB [Fournisseur OLE/DB 'MSDAORA' ITransactionJoin::JoinTransaction a retourné 0x8004d01b]
    Vérifiez que les versions OCI sont inscrites correctement comme décrit plus haut dans cet article.

    Remarque Si les entrées de Registre sont toutes correctes, le fichier MtxOCI.dll est chargé. Si le fichier MtxOCI.dll n'est pas chargé, vous ne pouvez pas exécuter de transactions distribuées contre Oracle à l'aide du fournisseur Microsoft OLE DB pour Oracle ni à l'aide du pilote ODBC Microsoft pour Oracle. Si vous utilisez un fournisseur tiers et que vous recevez l'erreur 7391, vérifiez que le fournisseur OLE DB que vous utilisez prend en charge les transactions distribuées. Si le fournisseur OLE DB prend en charge les transactions distribuées, vérifiez que Microsoft Distributed Transaction Coordinator (MSDTC) est en cours d'exécution.
  • Message 10
    Erreur 7392 : Impossible de démarrer une transaction sur le fournisseur OLE DB 'MSDAORA'. Trace de l'erreur OLE DB [Fournisseur OLE/DB 'MSDAORA' ITransactionLocal::StartTransaction a retourné 0x8004d013: ISOLEVEL=4096].
    Les informations suivantes sont tirées de la documentation en ligne de SQL Server :
    Le fournisseur OLE DB a retourné l'erreur 7392 car une seule transaction peut être active pour cette session. Cette erreur indique qu'une instruction de modification de données est tentée contre un fournisseur OLE DB lorsque la connexion se trouve dans une transaction explicite ou implicite et que le fournisseur OLE DB ne prend pas en charge les transactions imbriquées. SQL Server requiert cette prise en charge afin que, sous certaines conditions d'erreur, il puisse terminer les effets de l'instruction de modification des données tout en poursuivant la transaction.
    Si SET XACT_ABORT a la valeur ON, SQL Server n'exige pas que le fournisseur OLE DB prenne en charge les transactions imbriquées. Par conséquent, vous devez exécuter SET XACT_ABORT ON avant d'exécuter des instructions de modification des données contre des tables distantes dans une transaction implicite ou explicite, au cas où le fournisseur OLE DB que vous utilisez ne prendrait pas en charge les transactions imbriquées.

Références

Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
244661  (http://support.microsoft.com/kb/244661/ ) Limitations du pilote ODBC et du fournisseur OLEDB Microsoft Oracle
259959  (http://support.microsoft.com/kb/259959/ ) Techniques pour résoudre les problèmes de connectivité sur un serveur Oracle à l'aide du pilote ODBC et du fournisseur OLE DB
239719  (http://support.microsoft.com/kb/239719/ ) Capacité de prise en charge du pilote ODBC/fournisseur OLE DB Microsoft pour Oracle w.r.t Oracle 8.x
193893  (http://support.microsoft.com/kb/193893/ ) Informations relatives à l'utilisation d'Oracle avec Microsoft Transaction Server et des composants COM+
191168  (http://support.microsoft.com/kb/191168/ ) Erreur « -2147168246 (8004d00a) » Échec de l'inscription sur la transaction d'objets d'appel
Pour plus d'informations sur la façon d'utiliser un serveur lié avec DB2, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
218590  (http://support.microsoft.com/kb/218590/ ) Configuration de sources de données pour le fournisseur Microsoft OLE DB pour DB2
216428  (http://support.microsoft.com/kb/216428/ ) Configuration du pilote ODBC Microsoft pour DB2

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 2000 Édition 64 bits
  • Microsoft SQL Server 7.0 Standard
  • 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
Mots-clés : 
kbsqlserverengine kbhowtomaster KB280106
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store