【问题标题】:Querying Active Directory with T-SQL使用 T-SQL 查询 Active Directory
【发布时间】:2016-12-08 16:03:11
【问题描述】:

试过了:

EXEC master.dbo.sp_addlinkedserver
        @server = N'ADSI',
        @srvproduct=N'Active Directory Services',
        @provider=N'ADsDSOObject',
        @datasrc=N'server_name.your_domain.com'

EXEC master.dbo.sp_addlinkedsrvlogin 
        @rmtsrvname=N'ADSI',
        @useself=N'False',
        @locallogin=NULL,
        @rmtuser=N'your_domain\domain_user',
        @rmtpassword='********'

SELECT * 
FROM OPENQUERY (ADSI, 'SELECT *
                       FROM ''LDAP://DC=your_domain,DC=com''')

收到此错误:

消息 7321,第 16 级,状态 2,第 1 行
准备查询“SELECT * FROM 'LDAP://DC=your_domain,DC=com'”以针对链接服务器“ADSI”的 OLE DB 提供程序“ADsDSOObject”执行时出错。

我已经确认我的和 SQL Server 服务域帐户具有对 AD 的读取权限,并且选择了 ADsDSOObject 提供程序上的“允许进程内”。

任何想法将不胜感激。

【问题讨论】:

  • 如果您导航到您的链接服务器是 SSMS,您可以右键单击并测试连接。这行得通吗?
  • @Meghan Armes 是的!
  • 我认为那是为了@destination-data :)
  • 我认为问题是SELECT * 返回的数据与 SQL Server 不兼容。尝试将 OPENQUERY 中的 SELECT 子句限制为您正在使用的字段。有一些方便的提示here

标签: sql sql-server tsql active-directory linked-server


【解决方案1】:

我能找到的每个示例都有:LDAP://DC=your_domain,DC=com 作为语法。对于我们的服务器(可能还有其他服务器)来说,它是:LDAP://DC=your_domain,DC=internal

根据某人的建议,我使用 Softerra LDAP 浏览器(免费)并打开服务器,单击顶部节点,发现可分辨名称条目列为:DC=your_domain,DC=internal

一旦我进行了更改,我就可以看到 AD 数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多