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

Откуда:
Сообщений: 10
Здравствуйте!

Опишу ситуацию. На компе стоит MS SQL Server 2008. Поставил клиент Oracle 10g. Поставилось нормально, без ошибок. В Net Manager делаю тест-коннект к оракловой базе - все ОК. Дальше создаю связанный сервер в Management Studio. Хотел обычным способом - через Linked Servers -> New Linked Server, но в списке провайдеров нету ни Microsoft OLE DB Provider for Oracle, ни Oracle Provider for OLE DB. Тогда решил слинковать через функцию sp_addlinkedserver.

Код:
EXEC sp_addlinkedserver
   @server = N'LinkedOracle',
   @srvproduct = N'Oracle',
   @provider = N'MSDAORA',
   @datasrc = N'VM-LANS-ORGAZM';  -- сервер
GO

Дальше создаю юзера с помощью sp_addlinkedsrvlogin
EXEC sp_addlinkedsrvlogin 'LinkedOracle', 'false', 'sa', 'PRIVUSER', 'privuser'

Теперь пробую просмотреть список таблиц новосозданного слинкованного сервера, но при попытке раскрыть дерево ругается.
The OLE DB provider "MSDAORA" has not been registered. (Microsoft SQL Server, Error: 7403)

Казалось бы, что все ясно, но есть одно НО: пробую коннектится по ADO к этой же базе из стороннего скрипта со следующей строкой коннекта:
ADOConnection.ConnectionString = "Provider=msdaora;Data Source=PVDB;User Id=PRIVUSER;Password=privuser;" 
и все получается. То есть, провайдер MSDAORA все таки в системе есть и работает, но почему тогда MS SQL выдает ошибку?

Как разрешить возникшую проблему? Буду рад любой полезной информации по этому поводу
2 июн 11, 13:53    [10752459]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Что даст:

xp_enum_oledb_providers

и

SELECT @@version
2 июн 11, 14:07    [10752607]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
DrVavilon
Member

Откуда:
Сообщений: 10
Первый выдает:

SQLOLEDB {0C7FF16C-38E3-11d0-97AB-00C04FC2AD98} Microsoft OLE DB Provider for SQL Server
MSOLAP {10154F28-4979-4166-B114-3E7A7926C747} Microsoft OLE DB Provider for Analysis Services 10.0
ADsDSOObject {549365d0-ec26-11cf-8310-00aa00b505db} OLE DB Provider for Microsoft Directory Services
SQLNCLI10 {8F4A6B68-4F36-4e3c-BE81-BC7CA4E9C45C} SQL Server Native Client 10.0
MSDASQL {c8b522cb-5cf3-11ce-ade5-00aa0044773d} Microsoft OLE DB Provider for ODBC Drivers
MSDAOSP {dfc8bdc0-e378-11d0-9b30-0080c7e9fe95} Microsoft OLE DB Simple Provider
MSIDXS {F9AE8980-7E52-11d0-8964-00C04FD611D7} Microsoft OLE DB Provider for Indexing Service

Второй:
Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) Sep 16 2010 19:43:16 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6001: Service Pack 1) (VM)
2 июн 11, 14:13    [10752680]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
DrVavilon
Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) Sep 16 2010 19:43:16 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6001: Service Pack 1) (VM)


Клиент Oracle нужен тоже x64.
2 июн 11, 14:16    [10752718]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
DrVavilon
Опишу ситуацию. На компе стоит MS SQL Server 2008. Поставил клиент Oracle 10g. Поставилось нормально, без ошибок. В Net Manager делаю тест-коннект к оракловой базе - все ОК. Дальше создаю связанный сервер в Management Studio. Хотел обычным способом - через Linked Servers -> New Linked Server, но в списке провайдеров нету ни Microsoft OLE DB Provider for Oracle, ни Oracle Provider for OLE DB. Тогда решил слинковать через функцию sp_addlinkedserver.

Если провайдеров нет, слинковать уже ясно, что не получится. Сначала шерше ля провайдера. Причем для 64-битных машин Microsoft OLE DB провайдера для Oracle нет, можно рассчитывать только на оракловского. Когда установите - откройте "серверные объекты" в интерфейсе MS SQL Server Managenet Studio, найдите провайдера и поставьте галочку Allow inprocess в его свойствах. После чего пытайтесь создавать связанный сервер.
2 июн 11, 14:28    [10752871]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
Shlippenbaranus
Если провайдеров нет...


Имею в виду, не в системе, а в списке, возвращаемом при выполнении exec master..xp_enum_oledb_providers
2 июн 11, 14:33    [10752932]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
DrVavilon
Member

Откуда:
Сообщений: 10
с х64 - это глюк какой-то. У меня винда 32-битная, поэтому 64-битный SQL Server просто не стал бы. Для того, чтобы удостовериться, я установвил 32-битный Service Pack. Все прошло нормально, без эксцессов, следовательно у меня все таки 32 сервер стоит.

По поводу провайдера: А разве он не ставиться при установке ораклового клиента? Просто я четко помню, когда ставил клиент, в списке установленных компонентов он присутствовал. Даже если его ставить отдельно, то где его взять? Я смотрел на сайте Оракла, но нашел только дистрибутивы клиентов, а не провайдеров отдельно. Если Вы знаете, где его взять, буду очень благодарен за ссылку!
2 июн 11, 14:57    [10753197]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
DrVavilon
с х64 - это глюк какой-то. У меня винда 32-битная, поэтому 64-битный SQL Server просто не стал бы. Для того, чтобы удостовериться, я установвил 32-битный Service Pack. Все прошло нормально, без эксцессов, следовательно у меня все таки 32 сервер стоит.


Могу только хмыкнуть скептически, но: если вдруг у Вас действительно 32-битный SQL Server, то для того, чтобы пробудить MSDAORA, нужно подкорректировать реестр. Как именно - смотри тут. Причем, как я недавно писал, конкретные значения параметров OracleSqlLib и OracleXaLib в соотв. разделах реестра большого значения не имеют. Хотя обычно люди их выставляют под ту версию клиента, которую установили.

DrVavilon
По поводу провайдера: А разве он не ставиться при установке ораклового клиента?

В общем-то, ставится. Что-то там у вас в системе нахимичено.

А вообще, пользуйтесь поиском. Информации по связи с Oracle тут много, только разбросанная.
2 июн 11, 15:19    [10753451]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
DrVavilon
с х64 - это глюк какой-то. У меня винда 32-битная, поэтому 64-битный SQL Server просто не стал бы. Для того, чтобы удостовериться, я установвил 32-битный Service Pack. Все прошло нормально, без эксцессов, следовательно у меня все таки 32 сервер стоит.


У Вас на локальной машине - м.б., а на сервере, где Вы выполнили запрос х64, и по-ходу еще и виртуалка.
2 июн 11, 15:25    [10753541]     Ответить | Цитировать Сообщить модератору
 Re: Не могу слиновать сервер Oracle 10g в SQL Server 2008  [new]
DrVavilon
Member

Откуда:
Сообщений: 10
В общем, всем спасибо за помощь! Разобрался)

Короче говоря, Microsoft OLE DB Provider for Oracle так и не заработал (покопав немного на этом сайте, нашел, что этот провайдер вообще уже не развивается).

Другое дело, Oracle Provider for OLE DB. Скачал с сайта Оракл, поставил и сервер слинковался!

P.S. Кстати, так и непонятно, почему через ADO коннект провайдера MSDAORA прошел...
2 июн 11, 23:19    [10756267]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить