пятница, 20 сентября 2013 г.

Данные из Active Directory в MS SQL





Иногда бывает необходимость выгрузить данные об объектах 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
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.
Для ее устранения необходимо добавить связанный сервер (Linked Server ).


Для этого, в свою очередь, необходимо проделать следующий порядок действий:

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
 
3) Перейти в раздел Security и указать в контексте какого пользователя будет выполняться подключение. Например запускать в контексте пользователя, от имени которого запущена Microsoft SQL Server Management Studio
4) Нажать ОК

Теперь наш первоначальный запрос корректно отрабатывает выводя запрошенную нами информацию.

Комментариев нет:

Отправить комментарий