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

Откуда:
Сообщений: 34
Доброго времени суток.
Создал я тут линк с ораклом по аналогии с другими работающими, проверил и, вроде даже, всё хорошо, но у пользователей полезла ошибка:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "OraOLEDB.Oracle" for linked server "linked_server_name" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "OraOLEDB.Oracle" for linked server "linked_server_name".

Методом тыка выяснилось, что ошибка возникает при подключении к скулю под доменным пользователем, который не является локальным админом на хосте, на котором стоит sql-сервер. Я, как админ на хосте, при запуске запроса результат получал нормальный. Вот, кстати, пример запроса:

SELECT * FROM openquery(linked_server_name, 'select * from table_name ')

Под sql-аутентификацией, даже если у пользователя нет вообще никаких прав на sql-сервере, кроме public, запрос также выполняется, как и ожидалось. А вот под доменным пользователем, не являющимся локальным админом на хосте с sql-сервером выдаётся ошибка. Если права локального админа дать, то ошибка исчезает.

В безопасности линка настроено для всех пользователей подключение к ораклу под учёткой оракла. Интересно, что ошибка появляется уже после проверки логин-пароль на сервере оракла.

Соответственно вопрос: где и какие права надо настроить, чтобы оно работало.
19 май 16, 14:36    [19193842]     Ответить | Цитировать Сообщить модератору
 Re: link с ораклом не работает под доменным не админом  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
https://blogs.msdn.microsoft.com/dataaccesstechnologies/2010/08/19/permissions-needed-to-set-up-linked-server-with-out-of-process-provider/
19 май 16, 15:08    [19194038]     Ответить | Цитировать Сообщить модератору
 Re: link с ораклом не работает под доменным не админом  [new]
Lavrov_Yura
Member

Откуда:
Сообщений: 34
invm, благодарю за ссылку.
Применение данной инструкции результата на описанном выше сервере не дало. ((
Однако на втором сервере, где ошибка для ВСЕХ пользователей была "Access denied", как и описано в статье, применение инструкции привело к ситуации аналогичной первому серверу - запрос выполняется только от учётки sql-аутентификации, в противном случае описанная выше ошибка (на втором даже локальный админ на хосте получает ошибку).
Правда я не уверен, что правильно разобрался с SQL Proxy account, который описан в инструкции.
25 май 16, 08:40    [19215760]     Ответить | Цитировать Сообщить модератору
 Re: link с ораклом не работает под доменным не админом  [new]
VladimirSQL
Member

Откуда: Киев
Сообщений: 37
Lavrov_Yura
Под sql-аутентификацией, даже если у пользователя нет вообще никаких прав на sql-сервере, кроме public, запрос также выполняется, как и ожидалось. А вот под доменным пользователем, не являющимся локальным админом на хосте с sql-сервером выдаётся ошибка. Если права локального админа дать, то ошибка исчезает.


Могу предположить что группа локальных администраторов на вашем сервере добавлена в MS SQL на Security->Logins с каким-то правами доступа.
Проверьте или добавьте другого пользователя(ей) домена на этом же уровне и попробуйте выполнить запрос.
25 май 16, 17:27    [19219448]     Ответить | Цитировать Сообщить модератору
 Re: link с ораклом не работает под доменным не админом  [new]
Lavrov_Yura
Member

Откуда:
Сообщений: 34
VladimirSQL,
в безопасности sql-сервера у меня нет групп, тем более с администраторами.
Тестил права на тестовом доменном юзере: добавляешь тестового юзера в Computer Management -> system tools -> local user and groups -> groups -> administrarors - работает запрос, убираешь - не работает.
26 май 16, 09:45    [19221381]     Ответить | Цитировать Сообщить модератору
 Re: link с ораклом не работает под доменным не админом  [new]
Lavrov_Yura
Member

Откуда:
Сообщений: 34
Жаль, что идей как это решить не возникло.
Пришлось писать для разработчиков костыль, вот что из этого получилось (это вам чисто поржать):
declare @TSQL nvarchar(4000)
set @TSQL='SELECT * FROM openROWSET (
''SQLNCLI'',
''local_sql-server_name''; 
''sql-login''; 
''password'',
''SELECT * FROM openquery(oracle_link, ''''select ... 
from ...  
where v.inid in (@res)
'''')'')'
SET @TSQL = REPLACE(@TSQL,'@res', @res)
EXEC (@TSQL)
30 май 16, 09:43    [19234415]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить