Oracle-Anbieter für OLE DB

Der Oracle-Anbieter für OLE DB (8.1.7.3.0) ermöglicht verteilte Abfragen für Daten in Oracle-Datenbanken. Die folgende Unterstützung ist für den Oracle-Anbieter für OLE DB verfügbar:

Oracle 32-Bit

Nur Ausführung außerhalb des Prozesses

Oracle 64-Bit

Keine

So erstellen Sie einen Verbindungsserver für den Zugriff auf eine Instanz einer Oracle-Datenbank

  1. Stellen Sie sicher, dass die Oracle-Clientsoftware auf dem Server, auf dem Microsoft SQL Server ausgeführt wird, den Anforderungen des Anbieters entspricht. Der Oracle-Anbieter für OLE DB (8.1.7.3.0) erfordert den Oracle-Client 8.1.7.0.

  2. Erstellen Sie einen Aliasnamen auf dem Server, auf dem SQL Server ausgeführt wird, der auf eine Oracle-Datenbankinstanz verweist. Weitere Informationen finden Sie in der Oracle-Dokumentation.

  3. Führen Sie sp_addlinkedserver aus, um den Verbindungsserver zu erstellen, und geben Sie dabei OraOLEDB.Oracle als provider_name sowie den Aliasnamen für die Oracle-Datenbank als data_source an.

    Das folgende Beispiel geht davon aus, dass ein Aliasname als DQORA8 definiert wurde.

    exec sp_addlinkedserver @server='OrclDB', 
        @srvproduct='Oracle',
        @provider='OraOLEDB.Oracle', 
        @datasrc='DQORA8'
    
    SicherheitshinweisSicherheitshinweis

    Für dieses Beispiel wird nicht die Windows-Authentifizierung verwendet. Kennwörter werden unverschlüsselt übertragen. Kennwörter sind in Datenquellendefinitionen und Skripts, die auf Datenträgern gespeichert werden, in Sicherungen und in Protokolldateien sichtbar. Verwenden Sie für diese Art von Verbindung auf keinen Fall ein Administratorkennwort. Wenden Sie sich wegen Sicherheitshinweisen speziell für Ihre Umgebung an Ihren Netzwerkadministrator.

  4. Verwenden Sie sp_addlinkedsrvlogin, um Anmeldenamenzuordnungen von SQL Server-Anmeldenamen und Oracle-Anmeldenamen zu erstellen.

    Das folgende Beispiel ordnet dem SQL Server-Anmeldenamen Joe mithilfe des Oracle-Anmeldenamens OrclUsr und -Kennwortes OrclPwd den in Schritt 3 definierten Verbindungsserver zu:

    sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', 
       @useself = 'false', 
       @locallogin = 'Joe', 
       @rmtuser = 'OrclUsr', 
       @rmtpassword = 'OrclPwd'
    

Verwenden Sie die folgenden Regeln, wenn Sie auf Tabellen in einem Oracle-Verbindungsserver verweisen:

  • Wenn die Tabellen- und Spaltennamen in Oracle ohne Bezeichner in Anführungszeichen erstellt wurden, verwenden Sie nur Großbuchstaben.

  • Wenn die Tabellen- und Spaltennamen in Oracle mit Bezeichnern in Anführungszeichen erstellt wurden, verwenden Sie die gleiche Groß-/Kleinschreibung wie bei der Erstellung der Namen in Oracle.

  • INSERT-Anweisungen sollten Werte für alle Spalten in einer Tabelle bereitstellen, selbst wenn bestimmte Spalten in der Tabelle NULL sein oder Standardwerte aufweisen können.

  • Dieser Anbieter unterstützt nicht das direkte Übergeben von datetime-Literalwerten als Argumente im folgenden Format:

    EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>
    

    Die folgende Verwendung des datetime-Literalwertes '14-sep-94' wird z. B. nicht unterstützt:

    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB
    

    Erstellen Sie stattdessen eine datetime-Variable, weisen Sie dieser den Literalwert zu, und rufen Sie dann EXEC mit der Variablen als Argument auf:

    DECLARE @v1 datetime
    SET @v1 = CONVERT(datetime,'14-sep-94')
    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
    

Einschränkungen

SQL Server unterstützt nicht die Verwendung der AVG-Aggregatfunktion für Oracle-Tabellen, weil der Oracle-Anbieter den OLE DB-Typ DBTYPE_VARNUMERIC zurückgibt. SQL Server unterstützt DBTYPE_VARNUMERIC nicht. So gibt der folgende Code z. B. einen Fehler zurück:

SELECT AVG(QTY)
FROM ORA..RPUBS.SALES

Verwenden Sie OPENQUERY, um den Fehler zu vermeiden. Beispiel:

SELECT *
FROM OPENQUERY(ORA,
   'SELECT CAST (AVG(QTY) AS numeric)
   FROM ORA..RPUBS.SALES')

Registrierungseinträge

Damit der OLE DB-Anbieter für Oracle mit Oracle-Clientsoftware verwendet werden kann, muss die Registrierung des Clientcomputers geändert werden, indem eine Registrierungsdatei über eine Befehlszeile ausgeführt wird. Es sollten nicht mehrere Instanzen der Clientsoftware gleichzeitig ausgeführt werden. Diese Dateien werden in der folgenden Tabelle aufgeführt und befinden sich in derselben Verzeichnisstruktur, in der auch die MDAC-Installation (Microsoft Data Access Component) enthalten ist. In der Regel handelt es sich um das Verzeichnis C:\Programme\Gemeinsame Dateien\System\OLE DB.

Oracle-Client

Windows NT oder 9x

Windows 2000

7.x

mtxoci7x_winnt.reg

mtxoci7x_win2k.reg

8.0

mtxoci80_winnt.reg

mtxoci80_win2k.reg

8.1

mtxoci81_winnt.reg

mtxoci81_win2k.reg