配置数据库架构文件定义了配置数据库配置文件中可存在哪些属性。配置数据库架构还强行规定了可在哪些项设置哪些属性。架构只对编写为架构内属性的属性提供这种强制功能。写入到配置数据库配置中、遵循配置数据库架构规则的属性被视为“架构内属性”。未在架构内定义的属性可在配置数据库配置中编写为“自定义属性”。自定义属性可在配置数据库配置中使用,以替代架构强制,或用由架构定义的默认值以外的值配置属性。有关架构内属性和自定义属性的详细信息,请参阅将更改写入到 MetaBase.xml 中。
配置数据库架构存储在名为 MBSchema.xml 的可扩展标记语言 (XML) 文件中,该文件在 IIS 启动或重新启动时被写入到内存中的配置数据库中。在默认情况下,MBSchema.xml 文件位于 systemroot\System32\Inetsrv 文件夹中。有关如何将 MBSchema.xml 文件写入内存中的配置数据库中的详细信息,请参阅启动 IIS。
配置数据库架构的结构是使用名为“集合”的容器组织的。以下各节讨论了集合的不同类型及其用途。集合是在 MBSchema.xml 中使用 <Collection> 开始标记和结束标记定义的,其格式如下:
<Collection>
InternalName ="CollectionName"
AttributeName="AttributeValue">
</Collection>
CollectionName 是集合的名称,AttributeName 是集合的特性的名称,AttributeValue 是集合的特性的值。
所有的集合都位于 MBSchema.xml 中的同一层上;因此,任何集合都不是其他集合的父项。从上往下看 MBSchema.xml 文件,第一个集合(名为 MetabaseBaseClass)定义了架构中的全局设置。
下面的代码示例取自配置数据库架构文件,用于说明如何定义集合。为了在本页正确显示,已经更改了间距。
<Collection InternalName="MetabaseBaseClass" MetaFlagsEx="NOTABLESCHEMAHEAPENTRY" MetaFlags="HIDDEN">
<Property InternalName="Location" Type="WSTR" MetaFlags="PRIMARYKEY"/>
</Collection>
紧挨在 MetabaseBaseClass 下面的集合名为 IIsConfigObject。IIsConfigObject 集合是唯一的,因为在该集合中定义了所有属性。只有在 IIsConfigObject 集合中定义的属性才可以作为架构内属性写入配置数据库配置中。
属性是指与 IIS 管理对象及其对应的管理基本对象 (ABO) 关联的配置对象。在 IIsConfigObject 集合中定义的所有属性都包含特性。还为每个属性定义了这些特性的默认值。
注意 指派给 IIsConfigObject 集合中属性特性的默认值不必是在安装 IIS 时写入到配置数据库配置中的值。当在安装 IIS 之后将属性作为架构内属性写入配置数据库配置中时,会使用由 IIsConfigObject 集合定义的特性的默认值。
在 IIsConfigObject 集合中定义的每个属性都包含下列特性:ID、Type、UserType、Attributes、InternalName 和 DefaultValue。一些属性还包含下列特性:MetaFlags、MetaFlagsEx、StartingNumber 和 EndingNumber。属性特性包含在 <Property> 开始标记中。下面的 IIsConfigObject 集合的示例说明了如何定义属性。
<Property InternalName="ServerComment "
Type="STRING"
UserType="IIS_MD_UT_SERVER"
Attributes="INHERIT"
MetaFlagsEx="CACHE_PROPERTY_MODIFIED | WAS_NOTIFICATION"
DefaultValue=""/>
除了特性以外,一些属性还包含标志。每个标志都配置一个唯一的属性功能,如读取或写入访问。每个标志都由 ABO 使用标志的唯一“位掩码标识符”来标识。关于位掩码标识符及其用途的详细信息,请参阅配置数据库属性参考。
标志中包含名为 Value 和 ID 的特性。标志在属性的开始标记和结束标记中定义,它们使用 <Flag> 标记进行标识。为属性设置的所有标志的总值决定了属性的 DefaultValue 特性值(也称为属性的默认值)。下面的示例说明了包含标志的属性。
<Property InternalName="PasswordChangeFlags "
Type="DWORD"
UserType="IIS_MD_UT_SERVER"
Attributes="INHERIT"
MetaFlagsEx="CACHE_PROPERTY_MODIFIED"
DefaultValue="0"
EndingNumber="0">
<Flag InternalName="AuthChangeUnsecure" Value="1" />
<Flag InternalName="AuthChangeDisable" Value="2" />
<Flag InternalName="AuthAdvNotifyDisable" Value="4" />
</Property>
注意 标志及其特性在属性的开始标记和结束标记中编写。不包含标志的属性封装在属性的开始标记中,它们不使用结束标记。
位于 IIsConfigObject 集合下面的所有其余集合都按照项的类型进行组织。这些集合强制可在配置数据库配置中的哪些项处将属性编写为架构内属性。例如,如果名为
对于该规则的唯一例外是 IIsConfigObject 项类型,这在前面已经介绍过。因为所有属性都包含在 IIsConfigObject 集合中,所以所有属性都可以写入配置数据库配置中具有 IIsConfigObject 项类型的任何项中。
属性按如下格式写入这些其余集合中:
<Property InheritsPropertiesFrom="IIsConfigObject:PropertyName"/>
其中,PropertyName 是属性的名称。
所有包含在这些其余集合中的属性都从 IIsConfigObject 集合继承它们的默认值,因为所有的属性都是在 IIsConfigObject 集合中定义的。
不能使用未在配置数据库架构中定义的 Active Directory® 服务界面 (ADSI) 或 Windows Management Instrumentation (WMI) 来更新配置数据库配置中的属性。通过使用文本编辑器(如 Microsoft 记事本)直接写入 MetaBase.xml 文件中、不遵循配置数据库架构规则的更改不能写入内存中的配置数据库中。如果发生这种情况,会向 Windows 事件日志发送一条错误或警告消息。
可以通过定义自己的属性或通过从 IIsConfigObject 集合中删除不需要的属性来配置架构。这也称为“扩展架构”。还可以将属性添加到集合中或从集合中删除属性来定义自己的强制规则,以便规定可将特性属性写入配置数据库配置中的哪些项中。
要点 在配置配置数据库架构之前,应该首先确保打算进行的更改不会对配置数据库配置产生负面影响。例如,在从 IIsConfigObject 集合中删除属性之前,请确保打算从架构中删除的属性在配置数据库配置中不存在。
不支持使用文本编辑器(如记事本)直接编辑 MBSchema.xml 文件。必须以编程方式更改配置数据库架构。有关扩展架构的详细信息,请参阅扩展配置数据库架构。
© 1997-2003 Microsoft Corporation。保留所有权利。