Иногда бывает необходимость выгрузить данные об объектах Active Directory в SQL.
Для этого на просторах интернета был найден нехитрый SQL-запрос, который был слегка подредактирован под конкретные нужды:
SELECT
sn,
givenName,
sAMAccountName,
mail,
telephoneNumber,
mobile
FROM OPENQUERY
(ADSI,
'SELECT sn,givenName,sAMAccountName,mail,telephoneNumber,mobile
FROM ''LDAP://CN=User,DC=domain,DC=local'' WHERE objectCategory=''Person'' ORDER BY sn')
WHERE
sn IS NOT NULL and mail IS NOT NULL
К сожалению попытка выполнить запрос сразу оканчивается ошибкой:
Msg 7202, Level 11, State 2, Line 1Для ее устранения необходимо добавить связанный сервер (Linked Server ).
Could not find server 'ADSI' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
Для этого, в свою очередь, необходимо проделать следующий порядок действий:
1) Подключиться к нужному SQL серверу и запустить Microsoft SQL Server Management Studio
2) В менеджере объектов (Object Explorer) перейти к серверным объектам (Server Objects), нажать правой кнопкой мышки на пункт "Связанные сервера" (Linked Servers) и выбрать пункт меню "Новый связазанный сервер" (New Linked Server):
2) В открывшемся окне создания нового связанного сервера (New Linked Server) разделе General внести следующие данные
- Linked server: ADSI
- Server type: Other data source
- Provider: OLE DB Provider for Microsoft Directory Services
- Product name: Active Directory Services 2.5
- Data source: adsdatasource
- Provider string: ADSDSOObject
4) Нажать ОК
Теперь наш первоначальный запрос корректно отрабатывает выводя запрошенную нами информацию.
Комментариев нет:
Отправить комментарий