Verknüpfen von Oracle mit SQL Server

8

Ich versuche, SQL Server 2005 mit einer Oracle 10g-Datenbank zu verknüpfen. Ich habe den Oracle-Client auf dem SQL-Server installiert und validiert, dass ich eine Verbindung zur Oracle-Datenbank herstellen kann, indem ich sowohl tnsping als auch sqlplus verwende. Wenn ich versuche, eine Abfrage in SQL Server auszuführen, erhalte ich Folgendes:

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 beide folgenden Abfragen ohne Glück ausprobiert:

select * from openquery(ORA_CSSA2APD, 'select count(rowid) from eservice_op.agent')

select count(rowid) from ORA_CSSA2APD..eservice_op.agent

    
bokoxev 09.08.2010, 22:07
quelle

5 Antworten

5

Ich vermute eine Umgebungseinstellung. Das bedeutet, dass Ihre Sitzung die TNSNAMES.ORA-Datei abruft, die Sitzung, die SQL Server zugrunde liegt, jedoch nicht. Ich würde überprüfen, ob ORACLE_HOME und möglicherweise TNS_ADMIN gesetzt sind und auf zeigen.

Können Sie die Easy Connect-Syntax für die Datenbank mit der SQL Server-Verbindung verwenden?

IE ersetzt ORA_CSSA2APD durch Hostname: 1521 / service_name

    
Gary Myers 11.08.2010, 00:06
quelle
4

ORA: 12154 bedeutet normalerweise, dass der Alias ​​der Datenbank, mit der Sie eine Verbindung herstellen möchten, nicht in der Datei tnsnames.ora gefunden wurde. (Siehe Ссылка eine ausführlichere Erklärung.)

Sie müssen sicherstellen, dass die Datenquelle ein Alias ​​ist, von dem die Datei tnsnames Kenntnis hat (auf dem Server, auf dem sich SQL Server befindet, unabhängig davon, von wo aus Sie die Abfragen ausführen). SQL Server wird genau wie jeder andere Oracle-Client sein und muss wissen, wo mit und ohne die tnsnames.ora-Datei eine Verbindung hergestellt wird. Es wird nicht die Details darüber wissen, wo sich die Oracle-Datenbank befindet.

Wenn Sie keinen Zugriff auf den SQL Server-Server haben (da ist einer von der Abteilung der Redundanzabteilung), müssen Sie den Serveradministrator dazu bringen, das für Sie einzurichten.

(Die Datenquelleneigenschaft des Verbindungsservers sollte der Alias ​​im Alias ​​tnsnames.ora für die Datenbank sein, mit der Sie eine Verknüpfung herstellen möchten.)

HTH ...

    
Patrick Marchand 10.08.2010 00:05
quelle
2

TNS-Fehlermeldungen bedeuten im Allgemeinen, dass die Verbindung fehlerhaft ist (zB Host ist nicht erreichbar / Zeitüberschreitung am angegebenen Port, oder es weiß einfach nicht, worauf ORA_CSSA2APD zeigen soll).

Zu beachten ist, dass Sie ein 64-Bit-Windows verwenden und einen 32-Bit- oder 64-Bit-Oracle-Client (oder möglicherweise beide) verwenden. Wenn Sie eine 32-Bit-App auf einem 64-Bit-Betriebssystem ausführen, die versucht, Oracle aufzurufen, benötigt sie einen 32-Bit-Oracle-Client. Die Verwendung eines 32-Bit-Clients auf einem 64-Bit-Betriebssystem kann schwierig sein und es ist sicherer, sie nicht im Ordner "Programme (x86)" zu installieren.

Beachten Sie auch die folgenden

  

In einer 64-Bit-Version von Windows Server   2003 oder von Windows XP, der   Der Ordner% WinDir% \ System32 ist reserviert   für 64-Bit-Anwendungen. Wenn ein 32-Bit   Anwendung versucht auf die   System32-Ordner, Zugriff wird umgeleitet   in den folgenden Ordner:   % WinDir% \ SysWOW64

Bei 64-Bit-Fenstern befindet sich der 32-Bit-Kram im SysWOW64-Ordner und der 64-Bit-Kram befindet sich im Ordner system32.

    
Gary Myers 09.08.2010 22:59
quelle
1

Dieses Problem ist mir auch passiert, aber nur mit bestimmten Windows-Benutzerkonten. Eine Kombination aus Aktivieren der Provideroption "Inprozess zulassen" für das OraOLEDB.Oracle-Objekt (SSMS & gt; Serverobjekte & gt; Verbindungsserver & gt; Stellt OraOLEDB.Oracle bereit), das Neustarten des SQL Server-Windows-Dienstes und schließlich das Anpassen der Berechtigungen für das TNSNAMES.ora Datei direkt.

    
KirstieBallance 19.08.2016 21:04
quelle
0

Wir haben festgestellt, dass SQL Server aus unbekannten Gründen in Standard-Oracle-Speicherorten nach der Datei TNSNAMES.ORA gesucht hat.

Wir konnten die TNSNAMES.ORA-Dateien an den folgenden Orten mit erfolgreichen Ergebnissen platzieren:

Für SQL Server 32-Bit auf 32-Bit-Betriebssystem oder 64-Bit auf 64-Bit-Betriebssystem

%Vor%

Für SQL Server 32-Bit auf 64-Bit-Betriebssystem

%Vor%

Auch wir konnten uns mit SQL * Plus verbinden, aber SQL Server konnte das nicht. Es ist wichtig zu beachten, dass SQL * Plus nicht die gleiche TNSNAMES.ORA-Datei verwendet. Deshalb hat man gearbeitet.

    
MyITGuy 16.11.2013 23:13
quelle

Tags und Links