【发布时间】:2014-11-24 21:51:27
【问题描述】:
我即将完成这项工作。我需要在我们的 Intranet 上识别用户。我需要将该用户的objectGUID 存储在 SQL Server 数据库表中,并且能够再次检索该记录。我有几个不同的应用程序,PHP、ASP Classic 和 ASP.Net。我认为在 SQL Server 中执行 AD 查找可能是最简单的。
我可以使用本教程http://sql.dzone.com/news/querying-active-directory-thro中的步骤连接到 AD
我可以检索objectGUID 和我需要的任何其他内容,但我不确定如何将objectGUID 存储在数据库中或如何使用objectGUID 查询数据库。
我认为它是数据类型(128 长度字节数组?),需要转换,但我不知道该怎么做。
从活动目录中选择一条记录并插入到表中会显示插入的数据类型 objectGUID 为 varbinary(256)
select *
into temp_table
from openquery(adsi, '
select givenName,
sn,
sAMAccountName,
objectGUID
from ''LDAP://dc=somedomain,dc=com''
where sAMAccountName = ''some_user''
')
为了测试,我尝试使用从上面的 temp_table 检索到的 objectGUID 查询 AD。
declare @qry varchar(8000)
declare @var varbinary(256)
set @var = (SELECT objectGUID from temp_table)
set @qry = 'select *
from openquery(ADSI, ''
select
givenName,
sn,
sAMAccountName
from ''''LDAP://DC=somedomain,DC=com''''
where objectGUID = ''''+@var+''''
ORDER BY displayName
'')'
exec(@qry)
不返回任何行...
最初我认为这是带引号的正确语法
where objectGUID = '+@var+'
但返回错误:数据类型的运算符无效。运算符等于add,类型等于varchar
所以也许我的语法错误,或者仍然是数据类型问题?
提前致谢。
【问题讨论】:
标签: sql-server active-directory