Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie richten Sie einen Verbindungsserver zu einer Oracle-Datenbank auf SQL 2000/2005 ein?

Ich war in der Lage, einen Verbindungsserver zu einer Remote-Oracle-Datenbank einzurichten, was letztendlich ein mehrstufiger Prozess war:

  1. Installieren Sie Oracle ODBC-Treiber auf SQL Server.
  2. System-DSN für Oracle-Datenbank auf SQL Server erstellen.
  3. Verknüpften Server auf SQL-Server mit System-DSN erstellen.

Schritt 1:Oracle ODBC-Treiber auf dem Server installieren

a. Laden Sie die erforderlichen Oracle Instant Client-Pakete herunter:Basic, ODBC und SQL*Plus (optional)

b. Entpacken Sie die Pakete in ein lokales Verzeichnis auf dem SQL-Server, normalerweise C:\Oracle . Dies sollte zu einem [Verzeichnis] ​​wie C:\Oracle\instantclient_10_2 führen , was der Wert von [Verzeichnis] ​​ist, auf das im Rest dieser Antwort verwiesen wird.

c. Erstellen Sie eine Textdatei namens tnsnames.ora innerhalb des Instant-Client-[Verzeichnisses], das Folgendes enthält:

OracleTnsName = 
(
  DESCRIPTION=
  (
    ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
  )
  (
    CONNECT_DATA = (SERVICE_NAME=acc)
  )
)

Hinweis:Tatsächlicher HOST , PORT und SERVICE_NAME variiert je nach Oracle-Server, zu dem Sie eine Verbindung herstellen. Diese Informationen können häufig mithilfe der Oracle-Netzwerk-Client-Tools unter den Listenern gefunden werden .

Der OracleTnsName kann ein beliebiger Name sein, den Sie der Oracle-Datenquelle zuweisen möchten, und wird beim Einrichten des System-DSN verwendet. Sie können bei Bedarf auch die obige Syntax verwenden, um mehrere TNS-Namen in derselben tnsnames.ora-Datei zu definieren.

d. Fügen Sie das [Verzeichnis] ​​zum PATH des Systems hinzu Umgebungsvariable.

e. Erstellen Sie eine neue Systemumgebungsvariable namens TNS_Admin das einen Wert von [Verzeichnis]

hat

f. Führen Sie [directory]\odbc_install.exe aus Dienstprogramm zum Installieren der Oracle ODBC-Treiber.

g. Ein Neustart des SQL-Servers wird empfohlen, ist aber möglicherweise nicht erforderlich. Außerdem sollten Sie diesem Verzeichnis Sicherheitsberechtigungen für die Benutzeridentitäten des SQL-Servers und des SQL-Agenten erteilen.

Schritt 2:Erstellen Sie ein System-DNS, das den Oracle ODBC-Treiber verwendet

a. Öffnen Sie den ODBC-Datenquellen-Administrator Werkzeug. [Verwaltung --> Datenquellen (ODBC)]

b. Wählen Sie die Registerkarte System-DSN und dann die Schaltfläche Hinzufügen.

c. Wählen Sie in der Treiberliste Oracle in Instantclient {Version} aus . (z. B. 'Oracle in instantclient 10_2') und wählen Sie dann die Schaltfläche "Fertig stellen".

d. Geben Sie Folgendes an:

  • Data Source Name :{System-DSN-Name}
  • Description :{leer lassen/leer}
  • TNS Service Name :sollte den OracleTnsName haben Sie in tnsnames.ora definiert haben Datei aufgelistet, wählen Sie sie als Wert aus.
  • Benutzer-ID :{Oracle-Benutzername}

e. Wählen Sie die Schaltfläche Verbindung testen. Sie sollten aufgefordert werden, das {Oracle-Benutzerpasswort} anzugeben. Wenn alles gut geht, wird der Test erfolgreich sein.

Schritt 3:Verbindungsserver in SQL zur Oracle-Datenbank erstellen

Öffnen Sie ein Abfragefenster in SQL Server und führen Sie Folgendes aus:

EXEC sp_addlinkedserver 
     @server        = '{Linked Server Name}'
    ,@srvproduct    = '{System DSN Name}'
    ,@provider      = 'MSDASQL'
    ,@datasrc       = '{System DSN Name}'

EXEC sp_addlinkedsrvlogin 
     @rmtsrvname    = '{Linked Server Name}'
    ,@useself       = 'False'
    ,@locallogin    = NULL
    ,@rmtuser       = '{Oracle User Name}'
    ,@rmtpassword   = '{Oracle User Password}'

Hinweis:Der {Linked Server Name} kann alles sein, was Sie beim Verweisen auf den Oracle-Server verwenden möchten, außer {System DNS Name} müssen mit dem Namen des System-DSN übereinstimmen, den Sie zuvor erstellt haben.

Der {Oracle User Name} sollte mit der vom System-DSN verwendeten Benutzer-ID und dem {Oracle User Password} identisch sein sollte derselbe sein, den Sie verwendet haben, um die ODBC-Verbindung erfolgreich zu testen. Siehe KB 280106 für Informationen zur Behebung von Problemen mit Oracle Linked Server.

Abfrage des Oracle-Linked-Servers

Sie können OPENQUERY verwenden, um Pass-Through-Abfragen auf dem Oracle-Linked-Server auszuführen, aber beachten Sie, dass Sie bei sehr großen Datensätzen möglicherweise einen ORA-01652 erhalten Fehlermeldung, wenn Sie einen ORDER BY angeben -Klausel in der Pass-Through-Abfrage. Verschieben des ORDER BY -Klausel von der Pass-Through-Abfrage zur äußeren Select-Anweisung hat dieses Problem für mich gelöst.