2011-02-03 13 views
9

Active Directoryの情報(ユーザー名、名、姓)を抽出し、結果をSQLテーブルに取り込む方法を教えてください。Active DirectoryのデータをSQLテーブル

感謝

スコット

+0

あなたは何(プログラミング)言語を使用しています/行くの? –

答えて

1

それを行うためのさまざまな方法があります。私はPHPを使ってActive Directoryからデータを取得しています。PHPドキュメントの "Lightweight Directory Access Protocol"の章を見てください。 PHPを使用してデータベースにデータを取り込むことも簡単です(例: MySQLまたはMicrosoft SQL Server

3

.NET 3.5の場合は、新しいSystem.DirectoryServices.AccountManagement名前空間を使用します。

は、ここではそれについて学ぶ:

Managing Directory Security Principals in the .NET Framework 3.5

基本的に、あなたはあなたがに対処したいユーザーを列挙し、コンテナ(PrincipalContext)を設定し、思います。それらをループし、必要な情報を抽出し、SQL Serverにフィードします。

5

我々はLARGE AD環境のためにこれを行う方法:LDAPクエリを実行し、CSVファイル

  • BCPをにそれをダンプするAdFind(フリーウェアツール)を実行します

    1. 夜間バッチ処理(組み込みのSQLコマンドラインツール)を使用してCSVファイルをSQLデータベースのインポートテーブルに一括インポートする
    2. インポートテーブルからデータを取得してメインテーブルのレコードを追加/更新するストアドプロシージャ(osqlで実行)

    開始から終了まで約2時間で、145kユーザー、80kグループ、130kコンピューターを10ドメインから引き出します。これには、各ドメインコントローラにヒットする必要があるユーザーとコンピュータの正確なLastLogon情報を引き出すことが含まれます。それがなければ、プロセスには約30分かかります。

  • 4

    あなたはちょうど私が

    ADSIはこれに基づいて作成されたリンクサーバーで
    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 
    

    以下のコードを使用しています、SQLでそれを必要とする場合は、次の http://msdn2.microsoft.com/en-us/library/aa772380(VS.85).aspx

    +4

    ADSIは1つのクエリで1000を超えるレコードを返しません。その後、エラー – binball

    +0

    が報告され、ADSIでは複数値の属性を処理できません。また、複数値フィールドのクエリも失敗します。 – 1010