Oracle-Anbieter für OLE DB
Aktualisiert: 14. April 2006
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
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.
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.
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'
Sicherheitshinweis: 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. 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-AnmeldenamensOrclUsr
und -KennwortesOrclPwd
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 |
Siehe auch
Konzepte
Mit SQL Server getestete OLE DB-Anbieter
Verteilte Abfragen
Andere Ressourcen
sp_addlinkedserver (Transact-SQL)
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
14. April 2006 |
|
05. Dezember 2005 |
|