Могу ли я выполнить ОБНОВЛЕНИЕ, используя связанный сервер активных каталогов? - PullRequest
2 голосов
/ 09 марта 2012

Я связал свой 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''')

Ошибка:

Сообщение 7321, уровень 16, состояние 2, строка 2
Произошла ошибка при подготовкезапрос ...

Возможно ли это или есть идея, что это используется только для чтения?

1 Ответ

1 голос
/ 09 марта 2012

Насколько мне известно, интерфейс SQL Server-to-Active Directory доступен только для чтения - вы можете выбирать из AD, но не можете его обновить.

См. Советы по поиску ADO * Ричарда Мюллера по теме - он заявляет:

Поиск в Active Directory с использованием ADO очень эффективен. Поставщик извлекает записи, соответствующие критериям вашего запроса, за одну операцию, без необходимости привязки ко многим объектам. Тем не менее, в результате набор записей доступен только для чтения , поэтому ADO нельзя использовать для изменения Active Директория объектов напрямую. Если вам нужно изменить значения атрибута, вам придется привязаться к объекту.

...