提示的意思是“安装不能扩展AD架构,你的活动目录不允许架构更新,要继续安装必须取消前面的架构扩展选项,你可以在安装之后使用安装盘上的extadsch.exe程序进行架构扩展。”于是继续安装,安装完成之后使用Extadsch.exe进行架构扩展,但结果仍然是架构更新失败,查看系统盘下的extadsch.log日志文件,结果如下:
<03-28-2005 00:04:56> Modifying Active Directory Schema - with SMS extensions.
<03-28-2005 00:04:56> DS Root:CN=Schema,CN=Configuration,DC=fzz,DC=com
<03-28-2005 00:04:56> Failed to create attribute cn=MS-SMS-Site-Code. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=mS-SMS-Assignment-Site-Code. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=MS-SMS-Site-Boundaries. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=MS-SMS-Roaming-Boundaries. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=MS-SMS-Default-MP. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=mS-SMS-Device-Management-Point. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=MS-SMS-MP-Name. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=MS-SMS-MP-Address. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=MS-SMS-Ranged-IP-Low. Error code = 8206.
<03-28-2005 00:04:56> Failed to create attribute cn=MS-SMS-Ranged-IP-High. Error code = 8206.
<03-28-2005 00:04:56> Failed to create class cn=MS-SMS-Management-Point. Error code = 8202.
<03-28-2005 00:04:56> Failed to create class cn=MS-SMS-Server-Locator-Point. Error code = 8202.
<03-28-2005 00:04:56> Failed to create class cn=MS-SMS-Site. Error code = 8202.
<03-28-2005 00:04:57> Failed to create class cn=MS-SMS-Roaming-Boundary-Range. Error code = 8202.
<03-28-2005 00:04:57> Failed to extend the Active Directory schema.
问题分析
通常来说,要进行活动目录架构扩展,需要预先进行一些权限设置,因为大家都知道,活动目录也就是一个数据库,那么我们就可以把架构看成这个数据库中的表结构,很明显表结构是不能随意更改的(不然那不是天下大乱了:),在WIN2000域,默认情况下是禁止修改架构的(在windows 2003域,默认已经允许进行架构扩展),我这里是windows 2000域,所以先要允许进行架构扩展,
允许架构扩展
1, 在域控上运行regsvr32 schmmgmt.dll;
2,运行MMC,添加“AD架构”,在打开的窗口右击Active Directory Schema,并选择“操作主机”,选择“架构可以在此域控制器上更改”。
但即使允许了架构扩展,也并不是说每个人都有那个修改的权限,所以还必须指明谁可以进行架构扩展,在默认情况下,只有Schema admins通用组的成员才有这个权限,所以要想能够进行架构扩展,必须以Schema admins成员的身份登录后运行架构扩展(架构扩展是独立的,也就是说可以在SMS安装前或安装时或安装后任意时刻进行),通常这个人也就是根域的administrator。但不解的是,上面两个条件我都已经满足,为什么还不能进行架构扩展呢?看来我还需要更进一步了解这里的架构扩展过程,在这个过程中,将会增加4个类和10个属性,所以架构变动并不大,但值得注意的是,由于架构信息是GC的一部分,于是只要架构信息有了变动,它就将立即引发所有的GC进行一次完全复制,那如果有一部分GC此时没有在线将会怎样呢?是不是进行架构扩展时将会先检查所有的GC是不是正常运行,如果没有运行,是不是将不能进行架构扩展?这样一想,倒提醒了我,因为我这里确实有一台GC没有在线,这台GC是以前测试用的,它位于一个远程测试用的子域中,也是一个远程站点中,因为这个远程子域中有一台Exchange服务器,大家知道,由于Exchange服务器对GC的依赖程度所以在每个站点都应该至少有一个GC,所以我把远程子域中的DC也配置成了GC,但这个GC当时并没在线,看来也就是这个原因导致了架构扩展工具extadsch.exe不能检测到它在线,从而更新不能成功,于是进入“AD站点和服务”管理工具,取消远程站点下相应DC的GC身份(如图2),具体方法是先定位到相应站点下相应DC的NTDS Settings项,然后右击之进入其属性窗口,取消常规签下的“全局编录”项即可。以后要使用这个远程子域时再启用此选项即可。

再次运行extadsch.exe,这次再也不是以前的一闪而过,心想有戏了,隔了一会去看extadsch.log日志,发现更新成功了,证明前面的分析是正确的。日志如下:
<03-28-2005 00:28:29> Modifying Active Directory Schema - with SMS extensions.
<03-28-2005 00:28:30> DS Root:CN=Schema,CN=Configuration,DC=fzz,DC=com
<03-28-2005 00:28:32> Defined attribute cn=MS-SMS-Site-Code.
<03-28-2005 00:28:32> Defined attribute cn=mS-SMS-Assignment-Site-Code.
<03-28-2005 00:28:33> Defined attribute cn=MS-SMS-Site-Boundaries.
<03-28-2005 00:28:34> Defined attribute cn=MS-SMS-Roaming-Boundaries.
<03-28-2005 00:28:34> Defined attribute cn=MS-SMS-Default-MP.
<03-28-2005 00:28:35> Defined attribute cn=mS-SMS-Device-Management-Point.
<03-28-2005 00:28:35> Defined attribute cn=MS-SMS-MP-Name.
<03-28-2005 00:28:36> Defined attribute cn=MS-SMS-MP-Address.
<03-28-2005 00:28:37> Defined attribute cn=MS-SMS-Ranged-IP-Low.
<03-28-2005 00:28:37> Defined attribute cn=MS-SMS-Ranged-IP-High.
<03-28-2005 00:28:40> Defined class cn=MS-SMS-Management-Point.
<03-28-2005 00:28:40> Defined class cn=MS-SMS-Server-Locator-Point.
<03-28-2005 00:28:41> Defined class cn=MS-SMS-Site.
<03-28-2005 00:28:42> Defined class cn=MS-SMS-Roaming-Boundary-Range.
<03-28-2005 00:28:42> Successfully extended the Active Directory schema.
<03-28-2005 00:28:42> Please refer to the SMS documentation for instructions on the manual
<03-28-2005 00:28:42> configuration of access rights in active directory which may still
<03-28-2005 00:28:42> need to be performed. (Although the AD schema has now be extended,
<03-28-2005 00:28:42> AD must be configured to allow each SMS Site security rights to
<03-28-2005 00:28:42> publish in each of their domains.)
注意,从上面的日志可以看出,架构更新已经成功了,但细心的你从日志的最后五行可以发现上面仅仅只是修改了“表结构”,并没有向里面写入具体内容,也就是说SMS此时并没有向AD中发布信息(虽然这已经不是本文所要解决的问题,但也顺便说一下),向AD发布信息,实质也就是向AD中写入数据,所以需要写入者有相应的权限,这个写入者根据SMS使用的不同的安全模式而不同,如果是高级安全模式,那么这个写入者就是SMS服务器的计算机帐号,如果是标准安全模式,就是SMS的服务帐号,要为它们添加相应的权限,请按下面的步骤操作,
1,运行“AD用户和计算机”管理工具
2,在“查看”菜单下选择“高级功能”
3,右击下面的system,选择“属性”
4,选择“安全”标签
5,选择“高级”按钮
6,点击“添加”按钮
7,添加相应的帐号,高级安全模式这个帐号就是SMS服务器的计算机帐号,标准安全模式就是SMS的服务帐号。
8,给这个帐号完全控制的权限,并应用到“这个对像和全部子对像”。
如果SMS的相关配置正确,可以在上面的“System/system management”下看到MP、SLP和SMS站点在AD中发布的信息,如图3。
