1

Я пытаюсь создать связанные серверы в SQL Server 2000 и SQL Server 2005 x64 в базе данных Sybase Advantage с использованием поставщика OLE DB Advantage, 32-разрядной и 64-разрядной соответственно.Преимущество SQL Server Linked Server Access Denied Error

Я постоянно получаю следующее сообщение об ошибке при попытке просмотра каталога и при выполнении запроса с OPENQUERY с обоих серверов SQL:

OLE DB error trace [OLE/DB Provider 'Advantage OLE DB Provider' IUnknown::QueryInterface returned 0x80070005: Access denied.]. 
Msg 7399, Level 16, State 1, Line 1 
OLE DB provider 'Advantage OLE DB Provider' reported an error. Access denied. 

Следующая Stack Overflow вопрос и ответ помог мне решить эту проблему SQL Server 2005 x64:

Advantage to SQL 2008 Linked Server Access Denied Error

Однако, я все еще получаю доступ запрещен ошибка в SQL Server 2000, несмотря на установку Allow inprocess, как было предложено выше.

Оба связанных сервера используют один и тот же источник данных, учетные данные и параметры сервера. Любая помощь приветствуется.

ответ

0

Попробуйте выполнить запрос в Query Analyzer. Вы должны увидеть ошибки Advantage, определенные OLE DB. Например:

Сервер: Msg 7399, уровень 16, состояние 1, линия 1 OLE DB провайдер 'Advantage OLE DB Provider ' сообщила об ошибке.
[OLE/DB provider возвращенное сообщение: Ошибка 7078: База данных Advantage Сервер не может аутентифицировать пользователя. Проверьте правильность имени пользователя и пароля . axServerConnect
AdsConnect]

В данном случае это был плохой пользователя/пароль

+0

Благодаря Edgar. Я попытался выполнить запрос из Query Analyzer на сервере SQL 2000, а также из студии SQL Management на моем клиентском компьютере, и я получаю ту же ошибку независимо. Я обновил сообщение об ошибке в своем вопросе, чтобы включить одну строку, которую я изначально оставил. – Nimrod

+1

Учитывая IUnknown :: QueryInterface, я подозреваю, что SQL Server может оказаться не в состоянии найти поставщика OLE DB или не может его загрузить. A) Проверьте реестр HKLM \ Software \ Microsoft \ MSSQLServer \ Providers. С верхнего уровня вниз убедитесь, что для параметра AllowInProcess установлено значение 1. B) Используйте Process Monitor (из sysinternals) и фильтруйте на провайдере ADSOLEDB.dll и ACE32.dll и посмотрите, загружена ли она когда-либо. – Edgar