SQL 2005で実行されているデータベースがあります。ストアドプロシージャの1つは、リンクサーバーを使用してActiveDirectoryからユーザーの電子メールアドレスを検索します。リンクサーバーへの呼び出しは、データベース関数で発生します。
初めてAsp.Netアプリケーションから正常に呼び出すことができますが、その後定期的に次のエラーで失敗します。
{"リンクサーバー\"ADSI\"のOLEDBプロバイダー\"ADsDSOObject\ "が必要なトランザクションインターフェイスをサポートしていないため、要求された操作を実行できませんでした。"}
関数を呼び出す間の時間は、リンクサーバークエリが正しく機能するかどうかに影響するようです。取引は行っておりません。クイックシフト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