Einrichten eines Verbindungsservers zu einer Oracle-Datenbank in SQL Server und Problembehandlung

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 280106 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
280106 How to set up and troubleshoot a linked server to an Oracle database in SQL Server
Wichtig: Dieser Artikel enthält Informationen zum Bearbeiten der Registrierung. Bevor Sie die Registrierung bearbeiten, vergewissern Sie sich bitte, dass Sie die Registrierung wiederherstellen können, falls ein Problem auftritt. Weitere Informationen zum Erstellen einer Sicherungskopie, zum Wiederherstellen und Bearbeiten der Registrierung finden Sie im folgenden Artikel der Microsoft Knowledge Base:
256986 Beschreibung der Microsoft Windows-Registrierung
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt die Vorgehensweise zum Einrichten eines Verbindungsservers von einem Computer mit Microsoft SQL Server zu einer Oracle-Datenbank und erläutert grundlegende Schritte zur Problembehandlung bei häufigen Fehlern, die beim Einrichten eines Verbindungsservers zu Oracle auftreten können.

Schritte zum Einrichten eines Verbindungsservers zu Oracle

  1. Sie müssen die Oracle-Clientsoftware auf dem SQL Server-Computer installieren, auf dem der Verbindungsserver eingerichtet wird.
  2. Installieren Sie den gewünschten Treiber auf dem SQL Server-Computer. Microsoft unterstützt nur Microsoft OLE DB-Provider für Oracle und Microsoft ODBC-Treiber für Oracle. Wenn Sie für die Verbindung zu Oracle einen Fremdanbieter oder einen Treiber eines Fremdanbieters verwenden, müssen Sie sich beim jeweiligen Anbieter nach eventuellen Problemen erkundigen, die bei Verwendung des Providers oder Treibers dieses Anbieters auftreten können.
  3. Wenn Sie Microsoft OLE DB-Provider für Oracle und Microsoft ODBC-Treiber für Oracle verwenden, berücksichtigen Sie Folgendes:
    • Sowohl der OLE DB-Provider als auch der ODBC-Treiber, die in Microsoft Data Access Components (MDAC) enthalten sind, erfordern SQL*Net 2.3.x oder eine höhere Version. Sie müssen die Version 7.3.x oder höher der Oracle-Clientsoftware auf dem Clientcomputer installieren. Der Clientcomputer ist der Computer, auf dem SQL Server ausgeführt wird.
    • Vergewissern Sie sich, dass MDAC 2.5 oder eine höhere Version auf dem SQL Server-Computer installiert ist. Mit MDAC 2.1 oder einer früheren Version können Sie keine Verbindung zu Datenbanken herstellen, die Oracle 8.x oder eine höhere Version verwenden.
    • Damit MDAC 2.5 oder höhere Versionen in Verbindung mit der Oracle-Clientsoftware funktionieren, muss die Registrierung auf dem SQL Server-Clientcomputer geändert werden wie in der folgenden Tabelle angegeben.
                 Microsoft Windows NT,Oracle     Microsoft Windows 95,
      
      Client     Windows 98 und 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. Führen Sie einen Neustart des SQL Server-Computers durch, nachdem Sie die Oracle-Clientsoftware installiert haben.
  5. Richten Sie auf dem SQL Server-Computer mit dem folgenden Skript einen Verbindungsserver ein.
    -- 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
Hinweis Wenn Sie Microsoft ODBC-Treiber für Oracle verwenden, können Sie über den Parameter @datasrc einen DSN-Namen angeben. Bei einer Verbindung ohne DSN wird die Providerzeichenfolge über den Parameter @provstr angegeben. Verwenden Sie bei Microsoft OLE DB-Provider für Oracle den Oracle-Serveralias, der in der Datei TNSNames.Ora für den Parameter @datasrc konfiguriert ist. Weitere Informationen finden Sie unter dem Thema "sp_addlinkedserver" in der Onlinedokumentation zu SQL Server.

Häufige Fehlermeldungen und ihre Behebung

Achtung: Die unkorrekte Verwendung des Registrierungseditors kann schwerwiegende Probleme verursachen, die das gesamte System betreffen und eine Neuinstallierung des Betriebssystems erforderlich machen. Microsoft kann nicht garantieren, dass Probleme, die von einer falschen Verwendung des Registrierungseditors herrühren, behoben werden können. Benutzen Sie den Registrierungseditor auf eigene Verantwortung.

Sie können eine der zwei folgenden Methoden dazu verwenden, ausführliche Informationen zu allen Fehlern abzurufen, die beim Ausführen einer verteilten Abfrage auftreten.
  • Methode 1
    Führen Sie im Query Analyzer den folgenden Code aus, um das Ablaufverfolgungsflag 7300 zu aktivieren.
    DBCC Traceon(7300)
  • Methode 2
    Zeichnen Sie das Ereignis "OLEDB Errors" auf, dass in der Ereigniskategorie "Fehler und Warnungen" im SQL Profiler zu finden ist. Das Fehlermeldungsformat sieht so aus:
    Schnittstelle: Fehler bei Methode (Hex-Fehlercode)
    Hex-Fehlercodes finden Sie in der Datei "Oledberr.h", die im MDAC Software Development Kit (SDK) enthalten ist.
Die folgende Liste enthält zehn häufige Fehlermeldungen, die auftreten können, sowie Informationen zu ihrer Behebung.

Hinweis Wenn Sie mit SQL Server 2005 arbeiten, können diese Fehlermeldungen etwas anders aussehen. Die Fehler-IDs dieser Fehlermeldungen sind jedoch dieselben wie in SQL Server 2000. Sie können sie deshalb anhand der Fehler-IDs identifizieren.

Hinweis Bei Leistungsproblemen suchen Sie in der SQL Server-Onlinedokumentation nach dem Thema "Optimieren verteilter Abfragen.
  • Fehlermeldung 1
    Fehler 7399: Der OLE DB-Provider '%ls' meldete einen Fehler. %ls
    Aktivieren Sie das Ablaufverfolgungsflag 7300, oder zeichnen Sie das Ereignis "OLEDB Errors" mit dem SQL Profiler auf, um ausführliche OLEDB-Fehlerinformationen zu erhalten.
  • Fehlermeldung 2a
    "ORA-12154: TNS:Der Servicename konnte nicht aufgelöst werden"
    Fehlermeldung 2b
    "Oracle(tm) Client- und Netzwerkverbindung konnten nicht gefunden werden. Diese Komponenten werden von der Oracle Corporation geliefert und mit der Clientsoftware von Oracle, Version 7.3.3 oder höher, installiert.
    Weitere Informationen zur Behebung von Oracle-Verbindungsproblemen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
    259959 INFO: Techniken, Verbindungsprobleme zu einem Oracle Server zu debuggen, das den ODBC-Treiber und den OLE DB-Provider verwendet
  • Fehlermeldung 3
    Fehler 7302: Es konnte keine Instanz des OLE DB-Providers 'MSDAORA' erstellt werden.
    Vergewissern Sie sich, dass die Datei "MSDAORA.dll" richtig registriert ist. (Die Datei "MSDAORA.dll" ist die Microsoft OLE DB-Provider für Oracle-Datei). Registrieren Sie den Microsoft OLE DB-Provider für Oracle mit "RegSvr32.exe". Wenn die Registrierung fehlschlägt, installieren Sie Microsoft Data Access Components (MDAC) neu. Weitere Informationen zu MDAC finden Sie auf folgender MSDN-Website (Microsoft Developer Network):
    http://msdn.microsoft.com/data/Default.aspx
    Hinweis: Wenn Sie einen Oracle-Provider eines Fremdanbieters verwenden und dieser nicht außerhalb eines SQL Server-Prozesses ausgeführt werden kann, ermöglichen Sie seine In-Process-Ausführung, indem Sie die Provideroptionen ändern. Verwenden Sie eine der folgenden Methoden, um die Provideroptionen zu ändern.
    • Methode 1
      Gehen Sie zum folgenden Registrierungsschlüssel: Ändern Sie den Wert des Eintrags AllowInProcess (DWORD) auf 1. Sie finden diesen Registrierungsschlüssel unter dem entsprechenden Providernamen:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • Methode 2
      Legen Sie die Option InProcess zulassen direkt über SQL Server Enterprise Manager fest, wenn Sie einen neuen Verbindungsserver hinzufügen. Klicken Sie auf Provideroptionen, und aktivieren Sie anschließend das Kontrollkästchen InProcess zulassen.
  • Fehlermeldung 4
    Fehler 7303: Das Datenquellenobjekt des OLE DB-Providers 'MSDAORA' konnte nicht initialisiert werden. [OLE/DB-Provider meldete einen Fehler: ORA-01017: Benutzername oder Passwort falsch; Anmeldung verweigert] OLE DB-Fehlertrace [OLE/DB-Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80040e4d].
    Diese Fehlermeldung zeigt an, dass der Verbindungsserver keine richtige Benutzernamenzuordnung hat. Sie können die gespeicherte Prozedur sp_helplinkedsrvlogin ausführen, um die richtigen Anmeldeinformationen festzulegen. Überprüfen Sie außerdem, ob Sie die richtigen Parameter für die Konfiguration des Verbindungsservers angegeben haben.
  • Fehlermeldung 5
    Fehler 7306: Die '%ls'-Tabelle konnte nicht vom OLE DB-Provider 'MSDAORA' geöffnet werden. Die angegebene Tabelle ist nicht vorhanden. [OLE/DB-Provider meldete einen Fehler: Tabelle ist nicht vorhanden.][OLE/DB-Provider meldete einen Fehler: ORA-00942: Tabelle oder View nicht vorhanden] OLE DB-Fehlertrace [OLE/DB-Provider 'MSDAORA' IOpenRowset::OpenRowset returned 0x80040e37: Die angegebene Tabelle ist nicht vorhanden.].
    Fehler 7312: Ungültige Verwendung des Schemas und/oder Katalogs für den OLE DB-Provider ''%ls'. Ein vierteiliger Name wurde angegeben, der Provider legt jedoch die Schnittstellen nicht offen, die zum Verwenden eines Katalogs und/oder Schemas erforderlich sind
    Fehler 7313: Ein ungültiges Schema oder ein ungültiger Katalog wurde für den Provider '%ls' angegeben.
    Fehler 7314: Der OLE DB-Provider '%ls' enthält die Tabelle '%ls' nicht.
    Wenn diese Fehlermeldungen angezeigt werden, fehlt eventuell eine Tabelle im Oracle-Schema, oder Sie haben nicht die erforderlichen Berechtigungen. Vergewissern Sie sich, dass der Schemaname in Großbuchstaben eingegeben wurde. Die Groß-/Kleinschreibung von Tabelle und Spalten sollte den Angaben in den Oracle-Systemtabellen entsprechen.

    Auf Oracle-Seite wird eine Tabelle, die ohne doppelte Anführungszeichen erstellt wird, in Großbuchstaben gespeichert. Wenn die Tabelle oder Spalte in doppelte Anführungszeichen eingeschlossen ist, wird sie so gespeichert, wie sie ist.

    Der folgende Aufruf zeigt, ob die Tabelle im Oracle-Schema vorhanden ist. Dieser Aufruf zeigt auch den genauen Tabellennamen.
    sp_tables_ex  @table_server=Ora817Link, @table_schema='your_schema_name'
    Weitere Informationen zur Fehlermeldung 7306 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
    240340 "PRB: verteilte SQL-Abfrage mit Oracle Causes konnte Tabelle nicht öffnen Error"
  • Fehlermeldung 6
    Fehler 7413: Eine authentifizierte Anmeldung von Windows NT konnte nicht ausgeführt werden, da Delegierung nicht verfügbar ist.
    Meldung 18456, Ebene 14, Status 1 Anmeldung für Benutzer '\' fehlgeschlagen.
    Die folgenden Informationen stammen aus der SQL Server-Onlinedokumentation:
    Diese Fehlermeldung besagt, dass versucht wurde, eine verteilte Abfrage für eine authentifizierte Anmeldung von Microsoft Windows ohne eine explizite Benutzernamenzuordnung auszuführen. In einer Betriebssystemumgebung, in der die Sicherheitsdelegierung nicht unterstützt wird, benötigen authentifizierte Windows NT-Benutzernamen eine explizite Zuordnung zu einem mit sp_addlinkedsrvlogin erstellten Remotebenutzernamen und -kennwort.
  • Fehlermeldung 7
    Fehler 7354: Der OLE DB-Provider 'MSDAORA' hat ungültige Metadaten für die '%ls'-Spalte übergeben. Der Datentyp wird nicht unterstützt.
    Wenn diese Fehlermeldung angezeigt wird, handelt es sich möglicherweise um den Fehler, der im folgenden Artikel der Microsoft Knowledge Base beschrieben wird:
    243027 Update: numerische Spalte in Oracle verursacht Fehler 7354
  • Fehlermeldung 8
    Fehler 7356: Der OLE DB-Provider 'MSDAORA' hat inkonsistente Metadaten für eine Spalte übergeben. Die Metadateninformationen wurden zur Ausführungszeit geändert.
    Wenn Ihre Verbindungsserverabfrage einen Oracle-View verwendet, handelt es sich möglicherweise um das Problem, das im folgenden Artikel der Microsoft Knowledge Base beschrieben wird:
    251238 PRB: verteilte Abfrage geben Fehler 7356 mit MSDAORA zurück
  • Fehlermeldung 9
    Fehler 7391: Die angeforderte Operation konnte nicht durchgeführt werden, da OLE DB-Provider 'MSDAORA' verteilte Transaktionen nicht unterstützt. OLE DB-Fehlertrace [OLE/DB-Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]
    Überprüfen Sie, ob die OCI-Versionen richtig registriert sind wie zuvor in diesem Artikel beschrieben.

    Hinweis: Wenn alle Registrierungseinträge korrekt sind, wird die Datei "MtxOCI.dll" geladen. Wenn die Datei "MtxOCI.dll" nicht geladen wird, können Sie mit Microsoft OLE DB-Provider für Oracle oder Microsoft ODBC-Treiber für Oracle keine verteilten Transaktionen für Oracle ausführen. Wenn Sie einen Provider eines Fremdanbieters verwenden und Fehler 7391 angezeigt wird, vergewissern Sie sich, dass der OLE DB-Provider, den Sie verwenden, verteilte Transaktionen unterstützt. Wenn der OLE DB-Provider verteilte Transaktionen unterstützt, vergewissern Sie sich, dass der Microsoft Distributed Transaction Coordinator (MSDTC) ausgeführt wird.
  • Fehlermeldung 10
    Fehler 7392: Eine Transaktion für den OLE DB-Provider 'MSDAORA' konnte nicht gestartet werden. OLE DB-Fehlertrace [OLE/DB-Provider 'MSDAORA' ITransactionLocal::StartTransaction returned 0x8004d013: ISOLEVEL=4096].
    Die folgenden Informationen stammen aus der SQL Server-Onlinedokumentation:
    Der OLE DB-Provider gibt den Fehler 7392 zurück, weil für diese Sitzung nur eine Transaktion aktiv sein darf. Dieser Fehler weist darauf hin, dass versucht wurde, eine Anweisung zur Datenänderung für einen OLE DB-Provider auszuführen, während es sich bei der Verbindung um eine explizite oder implizite Transaktion handelt und der OLE DB-Provider keine geschachtelten Transaktionen unterstützt. SQL Server benötigt diese Unterstützung, damit bei bestimmten Fehlerbedingungen die Auswirkungen der Anweisung zur Datenänderung beendet werden können und gleichzeitig die Transaktion fortgesetzt werden kann.
    Wenn SET XACT_ABORT auf ON festgelegt ist, benötigt SQL Server keine Unterstützung für geschachtelte Transaktionen durch den OLE DB-Provider. Führen Sie deshalb SET XACT_ABORT ON, bevor Sie in einer impliziten oder expliziten Transaktion Anweisungen zur Datenänderung gegen Remotetabellen ausführen. Gehen Sie so vor, falls der OLE DB-Provider, den Sie verwenden, keine geschachtelten Transaktionen unterstützt.

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
244661 INFO: Einschränkungen von Microsoft Oracle ODBC-Treiber und OLEDB-Provider
259959 INFO: Techniken, Verbindungsprobleme zu einem Oracle Server zu debuggen, das den ODBC-Treiber und den OLE DB-Provider verwendet
239719 Supportfähigkeit von den Microsoft ODBC - Treiber- 8.x / den OLE DB Provider für Oracle-w.r.t-Oracle 8.x
193893 Information zu der Verwendung von Oracle mit Microsoft Transaction Server- und COM+-Komponenten
191168 Fehler "-2147168246 (8004d00a)" Eintragen auf dem Aufrufen der Transaktion nach Objekt ausgefallen wird
Weitere Informationen zur Verwendung eines Verbindungsservers mit DB2 finden Sie in folgenden Artikeln der Microsoft Knowledge Base:
218590 Konfigurieren von Datenquelle für das Microsoft OLE DB Provider for DB2
216428 Konfigurieren von Microsoft ODBC Driver for DB2

Eigenschaften

Artikel-ID: 280106 - Geändert am: Freitag, 27. Januar 2006 - Version: 7.3
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbhowtomaster KB280106
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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