Преимущество ошибки отказа в доступе к связанному серверу SQL 2000

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

Я продолжал получать следующую ошибку при попытке просмотреть каталог и при выполнении запроса с помощью 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.

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

Преимущество ошибки SQL 2008 Linked Server Access Denied

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

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


person Nimrod    schedule 04.02.2011    source источник


Ответы (1)


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

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

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

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