Соединение Oracle с SQL Server - PullRequest
       57

Соединение Oracle с SQL Server

8 голосов
/ 10 августа 2010

Я пытаюсь связать SQL Server 2005 с базой данных Oracle 10g. Я установил клиент Oracle на сервере SQL и подтвердил, что могу подключиться к базе данных Oracle, используя tnsping и sqlplus. Когда я пытаюсь выполнить запрос в SQL Server, я получаю следующее:

OLE DB provider "OraOLEDB.Oracle" for linked server "ORA_CSSA2APD" returned message "ORA-12154: TNS:could not resolve the connect identifier specified".<br> Msg 7303, Level 16, State 1, Line 1<br> Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "ORA_CSSA2APD".

Есть идеи? Я безуспешно пробовал оба следующих запроса:

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

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

Ответы [ 5 ]

5 голосов
/ 11 августа 2010

Я подозреваю, что настройки среды.Таким образом, ваш сеанс получает файл TNSNAMES.ORA, а сеанс, лежащий в основе SQL Server, - нет.Я бы проверил, установлены ли ORACLE_HOME и, возможно, TNS_ADMIN и указывают ли они на.

Можно ли использовать синтаксис easy connect для базы данных с подключением к SQL Server.

IE replaceORA_CSSA2APD с именем хоста: 1521 / имя_службы

4 голосов
/ 10 августа 2010

ORA: 12154 обычно означает, что псевдоним db, к которому вы пытаетесь подключиться, не найден в файле tnsnames.ora.(См. http://ora -12154.ora-code.com / более подробное объяснение.)

Необходимо убедиться, что источник данных является псевдонимом, о котором файл tnsnames знает(на сервере, где находится SQL Server, независимо от того, откуда вы выполняете запросы);SQL Server будет похож на любой другой клиент Oracle и должен знать, куда подключаться и без файла tnsnames.ora, он не будет знать подробности того, где находится база данных Oracle.

Если выУ вас нет доступа к серверу SQL Server (он есть у отдела резервирования), вам нужно попросить администратора сервера настроить его для вас.

(Свойство Data Source объектасвязанный сервер должен быть псевдонимом в псевдониме tnsnames.ora для базы данных, на которую вы пытаетесь связать.)

HTH ...

2 голосов
/ 10 августа 2010

Сообщения об ошибках TNS обычно означают дефект соединения (например, хост недоступен / время ожидания на указанном порту или просто не знает, на что должен указывать ORA_CSSA2APD).

Одна вещьРассмотрим, используете ли вы 64-битную Windows и используете ли вы 32-битный или 64-битный клиент Oracle (или, возможно, оба).Если у вас есть 32-битное приложение, работающее в 64-битной ОС, пытающееся вызвать Oracle, ему нужен 32-битный клиент Oracle.Использование 32-разрядного клиента в 64-разрядной ОС может быть затруднительным, и безопаснее НЕ устанавливать его в папку «Program Files (x86)».

Также имейте в виду следующие

В 64-разрядной версии Windows Server 2003 или Windows XP папка% WinDir% \ System32 зарезервирована для 64-разрядных приложений.Когда 32-разрядное приложение пытается получить доступ к папке System32, доступ перенаправляется в следующую папку:% WinDir% \ SysWOW64

То есть для 64-разрядных окон 32-разрядное содержимое находится в SysWOW64.папка и 64-битный материал находится в папке system32.

1 голос
/ 20 августа 2016

Эта проблема также случилась со мной, но только с определенными учетными записями пользователей Windows. Сочетание включения опции поставщика «Разрешить inprocess» для обеспечения OraOLEDB.Oracle (SSMS> Объекты сервера> Связанные серверы> Обеспечивает> OraOLEDB.Oracle), перезапуска службы Windows SQL Server и, наконец, настройки разрешений для файла TNSNAMES.ora непосредственно.

0 голосов
/ 17 ноября 2013

Мы обнаружили, что SQL Server по неизвестной причине начал искать файл TNSNAMES.ORA в расположениях Oracle по умолчанию.

Мы смогли разместить файлы TNSNAMES.ORA в следующих местах с успешными результатами:

Для SQL Server 32-разрядная в 32-разрядной ОС или 64-разрядная в 64-разрядной ОС

%ProgramFiles%\Oracle
%ProgramFiles%\Oracle\network\admin

Для SQL Server 32-разрядная в 64-разрядной ОС

%ProgramFiles% (x86)\Oracle
%ProgramFiles% (x86)\Oracle\network\admin

Мы тоже смогли подключиться, используя SQL * Plus, но SQL Server не смог. Важно отметить, что SQL * Plus не использовал тот же файл TNSNAMES.ORA. Вот почему один работал.

...