Sql server 我可以使用链接的active directory服务器进行更新吗?

Sql server 我可以使用链接的active directory服务器进行更新吗?,sql-server,ldap,linked-server,ldap-query,Sql Server,Ldap,Linked Server,Ldap Query,我将SQL Server 2008链接到Active Directory,如下所示: EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 'ADSDSOObject', 'adsdatasource' SELECT * FROM OPENQUERY( ADSI, 'SELECT DisplayName, TelephoneNu

我将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
然后我可以像这样查询我的电话号码:

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''')
错误:

味精7321,16级,状态2,第2行
准备查询时出错


这是可能的还是用于只读访问的想法?

据我所知,SQL Server到Active Directory接口是只读的-您可以从AD中选择,但无法更新它

参见Richard Mueller关于该主题的文章-他说:

使用ADO进行Active Directory搜索非常高效。提供程序在一次操作中检索与查询条件匹配的记录, 无需绑定到许多对象。然而,结果是 记录集是只读的,因此不能使用ADO来修改活动记录集 目录直接指向对象。如果需要修改属性值, 您必须绑定到对象


“绑定到对象”是什么意思?在绑定到对象的代码中调用一些方法-建立到对象的“连接”(如果愿意);不只是选择它的一些属性。基本LDAP协议有一个绑定方法,或者ADSI(AD服务接口)有一个
GetObject
方法绑定到单个对象。此外,
136
可能与
telephoneNumber
属性的语法不匹配,即使对象是可写的。