Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Oracle linked server  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Цепляю линкед сервер к Ораклу через SQL EM. Указываю логин/пароль одинаковый для всех. Через EM сервер виден, список таблиц отображается - т.е. линк нормальный.

далее пишу

select * from ORA_TEST..SA.TABLE_COUNTRY

получаю ошибку:

OLE DB provider 'OraOLEDB.Oracle' returned an invalid schema definition.
OLE DB error trace [Non-interface error: OLE/DB provider returned an invalid schema definition.].

если пишу

select * from ORA_TEST.SA..TABLE_COUNTRY

то получаю такую ошибку:

Invalid use of schema and/or catalog for OLE DB provider 'OraOLEDB.Oracle'. A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog and/or schema.
OLE DB error trace [Non-interface error].

SA - это то, что отбражается в SQL EM в поле Schema для данной таблицы. То, что оракл чувствителен к регистру, соблюдаю.

Что ему еще надо?
26 окт 04, 18:13    [1062738]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
Glory
Member

Откуда:
Сообщений: 104751
SA - это то, что отбражается в SQL EM в поле Schema для данной таблицы
Schema - это OWNER. Так что должен работать такой синтаксис
select * from ORA_TEST..SA.TABLE_COUNTRY

sp_tables_ex 'ORA_TEST' возвращает что либо ?
26 окт 04, 18:18    [1062757]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
select * from ORA_TEST..SA.TABLE_COUNTRY
Не работает :-((( Ошибка приведена выше.

select * from ORA_TEST..SA.TABLE_COUNTRY
возвращает кучу записей, среди них и TABLE_COUNTRY
26 окт 04, 18:32    [1062817]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Эээ, пардон. Второй запрос я имею в виду

sp_tables_ex 'ORA_TEST' 
26 окт 04, 18:34    [1062827]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
Glory
Member

Откуда:
Сообщений: 104751
1. Для других таблиц запрос работает. Для DUAL скажем ?
2. Какие логины были добавлены для linked server-а ?
3. Права у этих логинов на таблицу TABLE_COUNTRY есть ?
26 окт 04, 18:36    [1062835]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
1. Нет, ни для какой не могу заставить работать. Что такое DUAL?

2. Был добавлен один логин - CLFYRPT. На оракле он есть и судя по тому, что список таблиц под ним выводится, он работает. Более того, если использовать его в DTS Wisard'е, то все нормально качается.

3. Если смотреть в оракловых клиентских утилитах, то этот CLFYRPT имеет System Privilegies Granted -> SELECT ANY TABLE
26 окт 04, 19:00    [1062907]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
Glory
Member

Откуда:
Сообщений: 104751
Что такое DUAL?
Это виртуальная таблица. В Oracle нельзя сделать просто select 1 нужно делать select 1 from dual.
Работает ли select 1 from dual ?


Был добавлен один логин - CLFYRPT.
Как именно ? С укзанием что все логины используют его ?
Под кем сейчас запускается запрос - под SA ?

Linked server настаривался согласно статье из КВ ?
26 окт 04, 19:04    [1062913]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
В смысле надо запустить из-под QA
select 1 from ORA_TEST...DUAL
?

У меня этот запрос возвращает такую ошибку:

OLE DB provider 'OraOLEDB.Oracle' reported an error. Provider caused a server fault in an external process.
OLE DB error trace [OLE/DB Provider 'OraOLEDB.Oracle' IDBSchemaRowset::GetRowset returned 0x80010105: Provider caused a server fault in an external process.].

Логин был добавлен в MSSQL EM. Список логинов пустой, в нижней части
For a login not defined in the list above, connections will:
Be made using this security context:

и указан этот CLFYRPT.

Glory
Linked server настаривался согласно статье из КВ ?

Нет, каюсь. Прям вот в EM был сляпан по присланным от далекого человечка данным - имя сервера, логин/пароль и т.д.
26 окт 04, 19:29    [1062956]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
Zberik
Member

Откуда:
Сообщений: 67
В общем случае через cmd и QueryAnalyzer делаем так:

1) Проверяем PATH -> cmd -> set

Оракл ДОЛЖЕН БЫТЬ прописан ПОСЛЕ MSSQL
Если не так, то исправляем

2) Смотрим в реестре номер версии клиента под Оракл:

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q280106#toc

У меня XP-SP2 -> [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI]

OracleXaLib"="xa80.dll"
"OracleSqlLib"="sqllib80.dll"
"OracleOciLib"="oci.dll"

3) Заносим в реестр соответствующий reg-файл

У меня клиент 9i, а вот сервер 8-ка

Значим ставим mtxoci80_win2k.reg

Эти reg-файлы берутся из
"C:\Program Files\Common Files\System\Ole DB\mtxoci80_win2k.reg"

Если у вас на компе их нет, возьмите с того, где стоит СЕРВЕР Оракл

4) Перегружаемся для чистоты мыслей
5) в QueryAnalyzer-e

---------------------------------------------------------------------------
exec sp_addlinkedserver 'SERVER', 'Oracle', 'MSDAORA', 'TNSNAME', 'DBNAME'
--TNSNAME - можно посмотреть в Oracle Enterprise Manager Console
-- или в D:\oracle\ora90\network\ADMIN\tnsnames.ora
-- синим я выделил то место, вкуда я устанавливал клиента
-- у вас это может быть другие местности
--DBNAME - ну, это понятно для MSSQLнетчиков,
-- для ораклистов это называется по другому
---------------------------------------------------------------------------
exec sp_addlinkedsrvlogin 'SERVER', false, NULL, 'ORA_USER_NAME', 'ORA_USER_PASSWORD'
--------------------------------------------------------------------------------
--Может это и не нужно, но здесь кое-что покажут
-- Help on the linked server:
--EXEC sp_linkedservers
--EXEC sp_helpserver
--select * from sysservers
--------------------------------------------------------------------------------
SELECT * FROM SERVER..TEMIST2.PLHEAD
--любуемся всей красотой
--------------------------------------------------------------------------------
27 окт 04, 13:01    [1064475]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
Zberik
Member

Откуда:
Сообщений: 67
сорри, во как надо

SELECT * FROM SERVER..DBNAME.TableName
27 окт 04, 13:04    [1064499]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Всем спасибо за помощь. Проблема разрешилась вроде бы после смены ораклового провайдера на майкрософтовский для оракла.

Еще осталось небольшое сомнение, может быть, вы его проясните. Дело в том, что даже с "правильным" провайдером вылезали ошибки, указанные в первом посте. Может ли это быть связано с тем, что оракловый сервер удален и временами плохо доступен? Что-нибудь типа если достучаться до сервера удалось, а получить какую-нибудь инфу о структуре запрашиваемых таблиц - нет, то вот те ошибки и вылезали?
28 окт 04, 13:13    [1068087]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
Пашка
Member

Откуда:
Сообщений: 500
А что-то мне не помогло ни фига ;(
Ругается точно так же:
OLE DB provider 'OraOLEDB.Oracle' returned an invalid schema definition.
OLE DB error trace [Non-interface error: OLE/DB provider returned an invalid schema definition.].
Сервер Win 2000 Server, MS SQL 2000 SP3a, Сервер и клиент Oracl'а - 9.2.
И в реестр пробовал прописывать, как советовали товарищи выше, и Path даже поменял :).
И Microsoft OLE DB For ORACLE пробовал, и ORACLE Provider for OLE DB.
Ничче не помогает. Sp_tables_ex список кучи таблиц выдает, все хорошо.

Одна важная деталь - если создать System DSN и с помощью DTS вытаскивать данные - все прекрасно работает!
Т.е. с правами доступа все ок.

А вот селект с линкед-сервера никак не получается ;-\.

Помогите пожалуста. Может быть поиграть с Provider Options, когда создаю Linked Srever, или не поможет?
23 дек 04, 18:10    [1205784]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Oracle linked server  [new]
movik
Guest
Пашка, Я читал и делал все, что тут (и не только тут) описано, толку ноль. В результате выяснил - надо убрать галочку в provider options - "index as access path". После этого заработало. Может быть и еще какие галочки мешают, но у меня сейчас стоят только две: "Dynamic parameter" и "Allow inprocess". Видимо, остальные опции ораклевый OLEDB провайдер не поддерживает. (Стоит клиент Oracle 10.2)
14 июл 11, 15:18    [10974407]     Ответить | Цитировать Сообщить модератору
 Re: Oracle linked server  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Обострение, что ли? Откуда вы все, некропостеры, повылезали сегодня?
14 июл 11, 15:23    [10974448]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить