У нас есть база данных, работающая на SQL 2005. Одна из процедур магазина просматривает адрес электронной почты пользователя из Active Directory с помощью связанного сервера. Вызов связанного сервера происходит в функции базы данных.SQL Server Linked Server Query Периодически сбой
Я могу назвать это успешно от моего Asp.Net приложения в первый раз, но периодически после этого, он не со следующей ошибкой:
{ "Запрошенная операция не может быть выполнена, так как OLE DB провайдер \ "ADsDSOObject \" для связанного сервера \ "ADSI \" не поддерживает требуемый интерфейс транзакции. "}
Похоже, что время между вызовом функции влияет на то, будет ли запрос связанного сервера работать правильно. Я не использую никаких транзакций. Когда я пытаюсь вызвать функцию в быстром скрипте SQL-скрипта, он отлично работает каждый раз (даже при быстром тестировании).
Есть ли какие-то транзакции, которые остаются открытыми, что, естественно, умирает, если я не попробую снова вызвать процедуру? Я здесь в недоумении.
Вот простой вызов в процедуре магазина:
DECLARE @email varchar(50)
SELECT @email = LEFT(mail, 50)
FROM OPENQUERY (
ADSI,
'SELECT mail, sAMAccountName FROM ''LDAP://DC=Katz,DC=COM'' WHERE objectCategory = ''Person'' AND objectClass = ''User'''
)
WHERE sAMAccountName = CAST(@LoginName AS varchar(35))
RETURN @email
Мои запросы LDAP возвращают только 1 объект за раз, поэтому я не думаю, что количество возвращенных объектов является проблемой. Я могу посмотреть на контекст безопасности, но я немного сомневаюсь, потому что иногда он работает, а иногда и нет. Но все время контекст безопасности остается прежним. – anschoewe