我有一个存储用户信息的Active Directory(LDAP)。我正在尝试使用TSQL访问它,但我遇到了身份验证问题。
LDAP看起来像这样(我编辑了数据):
用户具有以下属性:
现在,我正试图通过使用OPENROWSET的SQL Server中的TSQL查询来获取此用户的信息,如下所示:
where()
但是当我执行它时,我收到以下错误:
服务器:消息7399,级别16,状态1,行1 OLE DB提供程序' ADSDSOObject'报告错误。提供者指示该用户 没有执行操作的许可。
现在,我不知道是否必须发送我正在尝试查询的用户的身份验证,或者我用来连接LDAPAdmin的凭据。如果我必须发送它,我应该发送已加密或没有加密的通行证吗?
感谢。
答案 0 :(得分:0)
您可以通过删除用户名和密码来更改您的OPENROWSET查询
SELECT * FROM OPENROWSET('ADSDSOObject','adsdatasource',
'SELECT givenname
FROM ''LDAP://kodyaz.com/DC=kodyaz,DC=com'' WHERE givenname = ''KODYAZ''
')
或者作为替代方案,您可以尝试以下查询结构
SELECT * FROM OpenQuery(ADSI, 'SELECT * FROM ''LDAP://kodyaz.com/DC=kodyaz,DC=com'' WHERE objectCategory=''user'' AND givenname = ''KODYAZ'' ')
我在OpenQuery命令
中使用givenname参数在WHERE子句中添加了用户objectCategory在运行Select语句之前,您可以add LDAP as linked server in SQL Server,如参考教程
中所示EXEC sp_addlinkedserver 'ADSI', 'Active Directory Service Interfaces', 'ADSDSOObject', 'adsdatasource'