Die Verknüpfung von Oracle mit SQL Server
Ich versuche zu verknüpfen, SQL Server 2005, Oracle 10g-Datenbank. Ich habe installiert die Oracle-client auf dem SQL-server und bestätigt, dass ich kann eine Verbindung zu der Oracle-Datenbank mit beiden tnsping und sqlplus. Wenn ich versuche, eine Abfrage ausführen, die in SQL Server bekomme ich die folgende:
OLE DB provider "OraOLEDB.Oracle" for linked server "ORA_CSSA2APD" returned message "ORA-12154: TNS:could not resolve the connect identifier specified".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "ORA_CSSA2APD".
Irgendwelche Ideen? Ich habe versucht, die beiden folgenden Abfragen mit kein Glück:
select * from openquery(ORA_CSSA2APD, 'select count(rowid) from eservice_op.agent')
select count(rowid) from ORA_CSSA2APD..eservice_op.agent
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, eine umgebungseinstellung. Das heißt, Ihre Sitzung ist die Abholung der TNSNAMES.ORA-Datei, sondern die der Sitzung zugrunde liegende SQL-Server nicht. Ich würde überprüfen, wurden ORACLE_HOME und, möglicherweise, TNS_ADMIN setzen und zeigt.
Sind Sie in der Lage, verwenden Sie die easy connect-syntax für die Datenbank mit der SQL Server-Verbindung .
IE ersetzen ORA_CSSA2APD mit hostname:1521/service_name
ORA:12154 bedeutet im Allgemeinen, dass der alias der Datenbank, die Sie eine Verbindung herstellen möchten, nicht gefunden, in der tnsnames.ora-Datei. (Siehe http://ora-12154.ora-code.com/ eine genauere Erklärung.)
Müssen Sie sicherstellen, dass die Daten-Quelle ist ein alias, an den die Datei tnsnames kennt (auf dem server, auf dem SQL Server ausgeführt wird, unabhängig davon, wo Sie sind, laufen die Anfragen von); SQL-Server wird genauso wie alle anderen Oracle-client und muss wissen, wo, zu verbinden und ohne die tnsnames.ora-Datei, es nicht zu wissen, die details, wo die Oracle db ist.
Wenn Sie keinen Zugriff auf den SQL-Server (es ist einer aus der Abteilung für Redundanz-Abteilung), die Sie brauchen, um server-admin zu setzen, dass Sie sich für Sie.
(Die Data Source-Eigenschaft des verknüpften Servers sollten Sie den alias in tnsnames.ora alias für die db, die Sie versuchen, zu verknüpfen.)
HTH...
TNS Fehlermeldungen in der Regel bedeutet, dass die Verbindung fehlerhaft ist (zB host ist unerreichbar/timesout auf den angegebenen port, oder die, die einfach nicht wissen, was ORA_CSSA2APD soll zeigen).
Eine Sache zu prüfen ist, verwenden Sie einen 64-bit-Windows und verwenden Sie ein 32-bit-oder 64-bit-Oracle-client (oder vielleicht beides). Hast du ein 32-bit-Anwendung unter einem 64-bit-OS versuchen, zu nennen, Oracle, braucht es eine 32-bit-Oracle-client. Mit einem 32-bit-client auf einem 64-bit-OS kann tückisch sein, und es sicherer ist, NICHT installieren Sie es im Ordner "Programme (x86)" - Ordner.
Auch Bedenken, die folgende
Also für 64-bit-windows die 32-bit-Zeug ist in den SysWOW64 Ordner und die 64-bit-Zeug ist in den system32-Ordner.
Dieses Problem ist mir passiert, als gut, aber nur mit bestimmten Windows-Benutzer-Konten. Eine Kombination von Aktivierung der "inprocess Zulassen" - provider-option für die OraOLEDB.Oracle bieten (SSMS - > Server-Objekte > Linked Server > Bietet > OraOLEDB.Oracle), Neustart der SQL Server-Windows-Dienst und schließlich die Anpassung der Berechtigungen auf die TNSNAMES.ora-Datei direkt.
Haben wir festgestellt, dass SQL Server für einige unbekannten Grund begann die Suche für die TNSNAMES.ORA-Datei im Standard-Oracle-Standorten.
Waren wir in der Lage, die TNSNAMES.ORA-Dateien in den folgenden Orten, mit Erfolg:
Für SQL Server 32-bit auf 32-bit-Betriebssystem oder 64-bit-auf 64-bit-OS
Für SQL Server 32-bit auf 64-bit-OS
Auch wir waren in der Lage, eine Verbindung mit SQL*Plus, SQL-Server konnte nicht. Es ist wichtig zu beachten, dass SQL*Plus nicht die gleichen TNSNAMES.ORA-Datei. Dies ist der Grund, warum man arbeitete.