当使用文本编辑器直接编辑 MetaBase.xml 文件并手动保存到磁盘中时,或者当内存中的配置数据库保存到磁盘中时,配置数据库配置会写入磁盘。
要点 只有当启用了运行时编辑功能或者在编辑和保存 MetaBase.xml 文件之前停止了 IIS 服务时,才能对 MetaBase.xml 文件进行编辑并将其保存到磁盘中。
只有在下列情况下才将内存中的配置数据库写入磁盘中:
下面的插图和讨论描述了如何将内存中的配置数据库配置写入磁盘。验证检查可能会影响 IIS 如何将内存中的配置数据库写入磁盘中,如可能的方案所阐释的那样。内存中的架构也按照类似方式写入磁盘中,随后将在本主题中对其进行讨论。
当发生写入磁盘事件时,IIS 首先检查内存中的配置数据库中是否有挂起的更改。在启用了运行时编辑功能时,写入 MetaBase.xml 文件的更改在内存中的配置数据库中将被视为挂起的更改。如果在内存中的配置数据库中没有挂起的更改,则不再执行任何操作,且不将内存中的配置数据库写入磁盘中。否则,IIS 继续执行第 2 步。
将内存中的配置数据库写入磁盘中时,内存中的配置数据库处于锁定状态以防止写入。这确保使用的是内存中的配置数据库的有效副本。
通过这种方法来确定主要版本号,可防止覆盖历史文件夹中的文件。尽管正常情况下不太可能,但是由于以下原因,历史文件夹中的文件有可能具有不连续的版本号:
当确定了主要版本号时,会在 MetaBase.xml 所在的文件夹中创建名为 MetaBase.bak 的临时文件。在第 3 步中确定的主要版本号将写入临时文件中。
创建了临时文件之后,会取消对内存中的配置数据库的锁定以允许通过管理基本对象 (ABO) 写入。
临时文件复制到历史文件夹中并按照如下格式命名,其中
MetaBase_
有关如何控制历史文件版本的详细信息,请参阅命名配置数据库历史文件。
如果管理员打开 MetaBase.xml 文件进行编辑,且编辑应用程序强制进行写入锁定,则 MetaBase.xml 文件可能会由应用程序进行写入锁定。强制进行写入锁定的应用程序会在文件关闭时解除锁定。但是,在大多数情况下,MetaBase.xml 文件不进行写入锁定。
如果 MetaBase.xml 由应用程序进行了写入锁定,则 IIS 不能将所做更改写入 MetaBase.xml 文件中。相反,会创建一个历史文件并将错误发送到事件日志中。
IIS 检查并确定 MetaBase.xml 文件是否比临时文件新。当将内存中的配置数据库写入磁盘与管理员保存对 MetaBase.xml 文件进行的更改(如果启用了运行时编辑功能)几乎同时发生时,MetaBase.xml 文件可能会比临时文件新。
如果 MetaBase.xml 文件比临时文件新,则不会用临时文件覆盖 MetaBase.xml 文件。相反,会将错误发送到事件日志中。
如果通过了所有的验证测试,则使用临时文件覆盖MetaBase.xml 文件,然后删除临时文件。
IIS 检查并确定历史文件夹中的历史文件对数是否大于
IIS 可以区分对内存中的配置数据库架构进行的单独更改和对内存中的配置数据库配置进行的更改。将内存中的配置数据库架构写入磁盘的过程与将内存中的配置数据库配置写入磁盘的过程相似,如下所示:
相关主题