刘荣刚
摘要:针对AD目录数据库查询统计比较繁琐的问题,简要介绍了AD目录数据库的结构以及SQLServer链接服务器的应用方法,将AD目录数据映射为SQLServer数据库视图,利用标准SQL语句实现对AD目录数据库的查询和统计。
关键词:活动目录;数据库;SQLServer; 链接服务器;域
中图分类号:TP311;TP393 文献标识码:A文章编号:1009-3044(2012)30-7161-03
Windows Active Directory(简称:AD目录)对局域网内部的计算机账户、用户账户进行集中统一的管理。AD目录数据库不仅保存了计算机和用户的基本信息,还保存了与计算机和用户活动有关的信息,是管理和维护计算机网络的重要依据。但是,AD目录数据库的结构与一般关系型数据库的结构不同,数据查询及统计分析十分繁琐。本文通过将AD目录数据库转换为SQLServer数据库的视图,通过大家都比较熟悉的SQLServer的查询语句即可实现对AD目录数据库的查询及统计分析。
1 建立SQLServer链接服务器
在SQLServer集成管理器中,可以创建链接服务器对象。SQLServer通过链接服务器对象链接到其他的非SQLServer数据库,使得用户可以象使用SQLServer数据库一样使用其他数据库,而不必理会实际的数据库结构。
要通过SQLServer访问AD目录数据库,首先就要创建SQLServer到AD目录数据库的链接服务器对象,如图1所示。
创建对象时需要提供的参数:
链接服务器:链接服务器对象的名称,在访问数据库时要使用该名称,由用户自己指定。在此我们把链接服务器名称定为ADSl。
访问接口:这是SQLServer代理用户处理实际的数据库的接口,SQLServer提供的AD目录数据库的接口是OLE DB Provider for Microsoft Directory Services。
产品名称:仅起备注作用,可以任意填写。
安全性:具有访问AD目录数据库权限的用户名和密码。
其他参数采用默认参数。
2 创建SQLServer数据库
在SQLServer中创建一个数据库,用于存储视图。在此我们把数据库名称定为adsql,如图2所示。
3 AD目录数据库的数据
AD目录数据库保存有大量的数据,大多数情况下我们只关心一部分数据。要利用AD目录数据库的数据,首先要了解AD目录数据库中我们所关心的数据的位置、名称、存储格式等。运行adsiedit.msc可以查看AD目录数据库的数据。
3.1 对象及其属性
AD目录数据库将所有资源都当作对象来处理,对象包括计算机、用户和组,这些对象共享公用目录数据库、安全策略以及与其他域之间的安全管理。每个对象都有一系列反映该对象特征的属性集,通过查询对象属性的值,可以掌握对象的具体情况。
3.2 与计算机对象相关的属性
计算机对象常用的属性包括计算机名称(name)、组织单位(distinguishname)、最后一次登录时间(lastlogon)、whencreated(对象创建时间)等。
3.3 与用户对象相关的属性
用户对象常用的属性包括用户名称(name)、组织单位(distinguishname)、最后一次登录时间(lastlogon)、手机(mobile)、座机(telephoneNumber)、电子信箱(mail)、whencreated(对象创建时间)等。
4 创建访问AD目录数据库的视图
假定AD目录的域名为“abc.cn”,计算机及用户对象所在的组织单位是“集团公司”,SQLServer链接服务器为上面创建的ADSI,针对希望查询的数据建立相应的视图。以下给出几个典型视图的创建示例:
4.1 创建视图adcomputer
视图adcomputer包括所有计算机所在的组织单位(ou)、上级组织单位(topou)、计算机名称(name)、最后一次登录时间(last_logon)。注意时间的换算。
6 结论
通过以上方法,将复杂的AD目录数据库结构映射为关系型数据库结构,采用标准SQL语句即可查询AD目录数据库的数据,更重要的是可以在程序中方便的集成查询AD目录数据库的功能,充分利用AD目录数据对域用户和计算机实施监控和管理。
参考文献:
[1] (美)Edward Whalen.SQL Server 2005管理员手册[M].黄湘情,谢琳,张静妍,译.北京:人民邮电出版社,2009.
[2] (美)DanielBlum. Active Directory服务实用教程[M].北京.清华大学出版社,2002.
[3] SQLServer 使用ADSI执行分布式查询ActiveDorectory对象[EB/OL].http://www.alixixi.com/program/a/2010062662234.shtml.