劉榮剛
摘要:針對AD目錄數(shù)據(jù)庫查詢統(tǒng)計比較繁瑣的問題,簡要介紹了AD目錄數(shù)據(jù)庫的結(jié)構(gòu)以及SQLServer鏈接服務(wù)器的應(yīng)用方法,將AD目錄數(shù)據(jù)映射為SQLServer數(shù)據(jù)庫視圖,利用標準SQL語句實現(xiàn)對AD目錄數(shù)據(jù)庫的查詢和統(tǒng)計。
關(guān)鍵詞:活動目錄;數(shù)據(jù)庫;SQLServer; 鏈接服務(wù)器;域
中圖分類號:TP311;TP393 文獻標識碼:A文章編號:1009-3044(2012)30-7161-03
Windows Active Directory(簡稱:AD目錄)對局域網(wǎng)內(nèi)部的計算機賬戶、用戶賬戶進行集中統(tǒng)一的管理。AD目錄數(shù)據(jù)庫不僅保存了計算機和用戶的基本信息,還保存了與計算機和用戶活動有關(guān)的信息,是管理和維護計算機網(wǎng)絡(luò)的重要依據(jù)。但是,AD目錄數(shù)據(jù)庫的結(jié)構(gòu)與一般關(guān)系型數(shù)據(jù)庫的結(jié)構(gòu)不同,數(shù)據(jù)查詢及統(tǒng)計分析十分繁瑣。本文通過將AD目錄數(shù)據(jù)庫轉(zhuǎn)換為SQLServer數(shù)據(jù)庫的視圖,通過大家都比較熟悉的SQLServer的查詢語句即可實現(xiàn)對AD目錄數(shù)據(jù)庫的查詢及統(tǒng)計分析。
1 建立SQLServer鏈接服務(wù)器
在SQLServer集成管理器中,可以創(chuàng)建鏈接服務(wù)器對象。SQLServer通過鏈接服務(wù)器對象鏈接到其他的非SQLServer數(shù)據(jù)庫,使得用戶可以象使用SQLServer數(shù)據(jù)庫一樣使用其他數(shù)據(jù)庫,而不必理會實際的數(shù)據(jù)庫結(jié)構(gòu)。
要通過SQLServer訪問AD目錄數(shù)據(jù)庫,首先就要創(chuàng)建SQLServer到AD目錄數(shù)據(jù)庫的鏈接服務(wù)器對象,如圖1所示。
創(chuàng)建對象時需要提供的參數(shù):
鏈接服務(wù)器:鏈接服務(wù)器對象的名稱,在訪問數(shù)據(jù)庫時要使用該名稱,由用戶自己指定。在此我們把鏈接服務(wù)器名稱定為ADSl。
訪問接口:這是SQLServer代理用戶處理實際的數(shù)據(jù)庫的接口,SQLServer提供的AD目錄數(shù)據(jù)庫的接口是OLE DB Provider for Microsoft Directory Services。
產(chǎn)品名稱:僅起備注作用,可以任意填寫。
安全性:具有訪問AD目錄數(shù)據(jù)庫權(quán)限的用戶名和密碼。
其他參數(shù)采用默認參數(shù)。
2 創(chuàng)建SQLServer數(shù)據(jù)庫
在SQLServer中創(chuàng)建一個數(shù)據(jù)庫,用于存儲視圖。在此我們把數(shù)據(jù)庫名稱定為adsql,如圖2所示。
3 AD目錄數(shù)據(jù)庫的數(shù)據(jù)
AD目錄數(shù)據(jù)庫保存有大量的數(shù)據(jù),大多數(shù)情況下我們只關(guān)心一部分數(shù)據(jù)。要利用AD目錄數(shù)據(jù)庫的數(shù)據(jù),首先要了解AD目錄數(shù)據(jù)庫中我們所關(guān)心的數(shù)據(jù)的位置、名稱、存儲格式等。運行adsiedit.msc可以查看AD目錄數(shù)據(jù)庫的數(shù)據(jù)。
3.1 對象及其屬性
AD目錄數(shù)據(jù)庫將所有資源都當作對象來處理,對象包括計算機、用戶和組,這些對象共享公用目錄數(shù)據(jù)庫、安全策略以及與其他域之間的安全管理。每個對象都有一系列反映該對象特征的屬性集,通過查詢對象屬性的值,可以掌握對象的具體情況。
3.2 與計算機對象相關(guān)的屬性
計算機對象常用的屬性包括計算機名稱(name)、組織單位(distinguishname)、最后一次登錄時間(lastlogon)、whencreated(對象創(chuàng)建時間)等。
3.3 與用戶對象相關(guān)的屬性
用戶對象常用的屬性包括用戶名稱(name)、組織單位(distinguishname)、最后一次登錄時間(lastlogon)、手機(mobile)、座機(telephoneNumber)、電子信箱(mail)、whencreated(對象創(chuàng)建時間)等。
4 創(chuàng)建訪問AD目錄數(shù)據(jù)庫的視圖
假定AD目錄的域名為“abc.cn”,計算機及用戶對象所在的組織單位是“集團公司”,SQLServer鏈接服務(wù)器為上面創(chuàng)建的ADSI,針對希望查詢的數(shù)據(jù)建立相應(yīng)的視圖。以下給出幾個典型視圖的創(chuàng)建示例:
4.1 創(chuàng)建視圖adcomputer
視圖adcomputer包括所有計算機所在的組織單位(ou)、上級組織單位(topou)、計算機名稱(name)、最后一次登錄時間(last_logon)。注意時間的換算。
6 結(jié)論
通過以上方法,將復(fù)雜的AD目錄數(shù)據(jù)庫結(jié)構(gòu)映射為關(guān)系型數(shù)據(jù)庫結(jié)構(gòu),采用標準SQL語句即可查詢AD目錄數(shù)據(jù)庫的數(shù)據(jù),更重要的是可以在程序中方便的集成查詢AD目錄數(shù)據(jù)庫的功能,充分利用AD目錄數(shù)據(jù)對域用戶和計算機實施監(jiān)控和管理。
參考文獻:
[1] (美)Edward Whalen.SQL Server 2005管理員手冊[M].黃湘情,謝琳,張靜妍,譯.北京:人民郵電出版社,2009.
[2] (美)DanielBlum. Active Directory服務(wù)實用教程[M].北京.清華大學(xué)出版社,2002.
[3] SQLServer 使用ADSI執(zhí)行分布式查詢ActiveDorectory對象[EB/OL].http://www.alixixi.com/program/a/2010062662234.shtml.