将配置数据库写入磁盘中

当使用文本编辑器直接编辑 MetaBase.xml 文件并手动保存到磁盘中时,或者当内存中的配置数据库保存到磁盘中时,配置数据库配置会写入磁盘。

要点 要点 只有当启用了运行时编辑功能或者在编辑和保存 MetaBase.xml 文件之前停止了 IIS 服务时,才能对 MetaBase.xml 文件进行编辑并将其保存到磁盘中。

只有在下列情况下才将内存中的配置数据库写入磁盘中:

下面的插图和讨论描述了如何将内存中的配置数据库配置写入磁盘。验证检查可能会影响 IIS 如何将内存中的配置数据库写入磁盘中,如可能的方案所阐释的那样。内存中的架构也按照类似方式写入磁盘中,随后将在本主题中对其进行讨论。

将内存中的配置数据库配置写入磁盘中

阐释如何将内存中的配置数据库写入磁盘中。

第 1 步:内存的配置数据库中是否有挂起的更改?

当发生写入磁盘事件时,IIS 首先检查内存中的配置数据库中是否有挂起的更改。在启用了运行时编辑功能时,写入 MetaBase.xml 文件的更改在内存中的配置数据库中将被视为挂起的更改。如果在内存中的配置数据库中没有挂起的更改,则不再执行任何操作,且不将内存中的配置数据库写入磁盘中。否则,IIS 继续执行第 2 步。

第 2 步:IIS 将锁定内存中的配置数据库以防止外部写入。

将内存中的配置数据库写入磁盘中时,内存中的配置数据库处于锁定状态以防止写入。这确保使用的是内存中的配置数据库的有效副本。

第 3 步:IIS 确定主要版本号。

  1. IIS 将内存中的配置数据库中 HistoryMajorVersionNumber 属性的值增加 1。
  2. 然后,IIS 验证历史文件夹中的文件是否用相同的主要版本号命名。如果历史文件夹中存在使用相同主要版本号的文件,则 IIS 再次将内存中的配置数据库中 HistoryMajorVersionNumber 属性的值增加 1,然后检查历史文件夹以确定主要版本号是否可用。重复该过程,直到找到可用的主要版本号。

通过这种方法来确定主要版本号,可防止覆盖历史文件夹中的文件。尽管正常情况下不太可能,但是由于以下原因,历史文件夹中的文件有可能具有不连续的版本号:

第 4 步:IIS 创建一个包含内存中配置数据库配置的临时文件。

当确定了主要版本号时,会在 MetaBase.xml 所在的文件夹中创建名为 MetaBase.bak 的临时文件。在第 3 步中确定的主要版本号将写入临时文件中。

第 5 步:IIS 取消对内存中的配置数据库的锁定以允许写入。

创建了临时文件之后,会取消对内存中的配置数据库的锁定以允许通过管理基本对象 (ABO) 写入。

第 6 步:IIS 将临时文件复制到历史文件夹中,并使用主要版本号和次要版本号重新命名历史文件。

临时文件复制到历史文件夹中并按照如下格式命名,其中 HistoryMajorVersionNumber 是在第 3 步中确定的主要版本号,次要版本号重置为 0。

MetaBase_HistoryMajorVersionNumber_minor version number.xml

有关如何控制历史文件版本的详细信息,请参阅命名配置数据库历史文件

第 7 步:MetaBase.xml 是否处于写入锁定状态?

如果管理员打开 MetaBase.xml 文件进行编辑,且编辑应用程序强制进行写入锁定,则 MetaBase.xml 文件可能会由应用程序进行写入锁定。强制进行写入锁定的应用程序会在文件关闭时解除锁定。但是,在大多数情况下,MetaBase.xml 文件不进行写入锁定。

如果 MetaBase.xml 由应用程序进行了写入锁定,则 IIS 不能将所做更改写入 MetaBase.xml 文件中。相反,会创建一个历史文件并将错误发送到事件日志中。

第 8 步:MetaBase.xml 是否比临时文件新?

IIS 检查并确定 MetaBase.xml 文件是否比临时文件新。当将内存中的配置数据库写入磁盘与管理员保存对 MetaBase.xml 文件进行的更改(如果启用了运行时编辑功能)几乎同时发生时,MetaBase.xml 文件可能会比临时文件新。

如果 MetaBase.xml 文件比临时文件新,则不会用临时文件覆盖 MetaBase.xml 文件。相反,会将错误发送到事件日志中。

第 9 步:临时文件在复制时覆盖 MetaBase.xml,然后被删除。

如果通过了所有的验证测试,则使用临时文件覆盖MetaBase.xml 文件,然后删除临时文件。

第 10 步:是否删除最旧的历史文件?

IIS 检查并确定历史文件夹中的历史文件对数是否大于 MaxHistoryFiles 属性的值。(历史文件对是 MetaBase.xml 和 MBSchema.xml 历史文件,它们是使用相同的主要版本号和次要版本号命名的。)如果历史文件对的数量大于 MaxHistoryFiles 属性的值,则根据时间戳值删除最旧的历史文件对。

将内存中的架构写入磁盘中

IIS 可以区分对内存中的配置数据库架构进行的单独更改和对内存中的配置数据库配置进行的更改。将内存中的配置数据库架构写入磁盘的过程与将内存中的配置数据库配置写入磁盘的过程相似,如下所示:

相关主题


© 1997-2003 Microsoft Corporation。保留所有权利