TSQL:从LDAP访问用户数据

时间:2016-07-28 12:55:08

标签: sql-server tsql active-directory ldap

我有一个存储用户信息的Active Directory(LDAP)。我正在尝试使用TSQL访问它,但我遇到了身份验证问题。

LDAP看起来像这样(我编辑了数据):

enter image description here

用户具有以下属性:

enter image description here

现在,我正试图通过使用OPENROWSET的SQL Server中的TSQL查询来获取此用户的信息,如下所示:

where()

但是当我执行它时,我收到以下错误:

  

服务器:消息7399,级别16,状态1,行1 OLE DB提供程序'   ADSDSOObject'报告错误。提供者指示该用户   没有执行操作的许可。

现在,我不知道是否必须发送我正在尝试查询的用户的身份验证,或者我用来连接LDAPAdmin的凭据。如果我必须发送它,我应该发送已加密或没有加密的通行证吗?

感谢。

1 个答案:

答案 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'