Данные Active Directory в таблицу SQL - PullRequest
9 голосов
/ 03 февраля 2011

Как мне извлечь информацию Active Directory (имя пользователя, имя, фамилию) и заполнить таблицу SQL результатами?

Большое спасибо

Scott

Ответы [ 4 ]

6 голосов
/ 14 февраля 2011

Способ, которым мы делаем это для LARGE AD среды:

  1. Ночной пакетный процесс, который запускает AdFind (бесплатный инструмент) для выполнения запроса LDAPи выгрузить его в файлы CSV
  2. BCP (встроенный инструмент командной строки SQL) для массового импорта файлов CSV в таблицы импорта в базе данных SQL
  3. Хранимая процедура(выполняется с помощью osql ) для извлечения данных из таблицы импорта и добавления / обновления записей в основных таблицах

Мы собираем 145 тыс. пользователей, 80 тыс. групп, 130 тыс. компьютеров из 10 доменов.примерно через 2 часа от начала до конца.Это включает в себя получение точной информации LastLogon для пользователей и компьютеров, что требует от вас попадания на каждый контроллер домена.Без этого процесс занимает около 30 минут.

4 голосов
/ 06 мая 2011

Если вам просто нужно это в SQL, я использую код ниже

INSERT...
SELECT A.SAMAccountName, A.Mail,  A.displayName  FROM
    (SELECT * FROM OpenQuery(ADSI, 'SELECT title, displayName, sAMAccountName, givenName, telephoneNumber, facsimileTelephoneNumber, sn, userAccountControl,mail  
    FROM ''LDAP://domain.ro/DC=domain,DC=ro'' where objectClass = ''User''')
    WHERE (sn is not null) and (givenName is not null) and (mail is not null) )A

, где ADSI - это связанный сервер, созданный на основе этого: http://msdn2.microsoft.com/en-us/library/aa772380(VS.85).aspx

3 голосов
/ 03 февраля 2011

Если вы используете .NET 3.5, я бы использовал для этого новое пространство имен System.DirectoryServices.AccountManagement.

Узнайте об этом здесь:

Управление принципами безопасности каталога в.NET Framework 3.5

По сути, вы устанавливаете контейнер (PrincipalContext), а затем перечисляете пользователей, с которыми хотите иметь дело.Зацикливайтесь на них, извлекайте необходимую информацию и передавайте ее в SQL Server.

1 голос
/ 03 февраля 2011

Есть разные способы сделать это. Я использую PHP для получения данных из нашей Active Directory. Посмотрите на главу « Облегченный протокол доступа к каталогам » в документации PHP. Также легко заполнить базу данных с помощью PHP, например, MySQL или Microsoft SQL Server .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...