我们有一个在 SQL 2005 上运行的数据库。其中一个存储过程使用链接服务器从 Active Directory 中查找用户的电子邮件地址。对链接服务器的调用发生在数据库函数中。
我第一次可以从我的 Asp.Net 应用程序成功调用,但之后会定期失败,并出现以下错误:
{"无法执行请求的操作,因为链接服务器 \"ADSI\" 的 OLE DB 提供程序 \"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