我将SQL Server 2008链接到Active Directory,如下所示:
EXEC sp_addlinkedserver
'ADSI',
'Active Directory Services 2.5',
'ADSDSOObject',
'adsdatasource'
然后我可以像这样查询我的电话号码:
SELECT *
FROM OPENQUERY(
ADSI,
'SELECT DisplayName, TelephoneNumber from ''LDAP://ad1/DC=directagents,DC=local'' WHERE DisplayName=''Aaron Anodide''')
where not DisplayName is null
order by DisplayName
但是我无法更改我的电话号码,因为这会导致错误:
SELECT * FROM
OPENQUERY(
ADSI,
'UPDATE TelephoneNumber from ''LDAP://ad1/DC=directagents,DC=local'' SET TelephoneNumber=''136'' WHERE DisplayName=''Aaron Anodide''')
错误:
Msg 7321,Level 16,State 2,Line 2
准备查询时发生错误...
这是可能的还是这个用于只读访问的想法?
答案 0 :(得分:1)
据我所知,SQL Server-to-Active Directory界面是只读的 - 您可以从AD中进行选择,但无法对其进行更新。
见Richard Mueller关于这个主题的ADO Search Tips - 他说:
使用ADO进行Active Directory搜索非常有效。提供程序在一次操作中检索与您的查询条件匹配的记录, 无需绑定到许多对象。但是,结果 记录集是只读的,因此ADO 不能用于修改Active 目录对象直接。如果需要修改属性值, 你必须绑定到对象。