我有一个对Active Directory的OpenQuery调用,它获取给定Windows域帐户名的电子邮件地址。它工作正常,直到我把它放在插入触发器。违规的T-SQL是:
set @sql = 'select mail from openquery(ADSI, '''
+ 'SELECT mail FROM ''''LDAP://DC=COMPANY,DC=LOCAL''''
WHERE objectClass=''''user'''' AND objectClass<>''''computer''''
AND samAccountName=''''username'''''') '
exec sp_executesql @sql, N'@recipients varchar(500) output', @recipients output
ADSI是链接服务器,我将安全上下文设置为始终使用特定用户帐户。添加新记录时,我的Web应用程序中返回了以下错误。
“元数据集合中不存在具有标识'mail'的成员。 参数名称:identity“
我尝试使用我的应用程序用于连接数据库并从SQL Management Studio运行查询的同一用户进行连接,但我无法在Trigger之外复制问题。有人能指出我正确的方向吗?我怀疑这是一个安全问题,但我迷失了,并且没有想法。