数据库即时文件初始化

初始化数据和日志文件以覆盖以前删除的文件中磁盘上留下的任何现有数据。 执行以下任一操作时,首先通过用零填充文件来初始化数据和日志文件:

  • 创建数据库。

  • 将文件、日志或数据添加到现有数据库。

  • 增加现有文件的大小(包括自动增长操作)。

  • 还原数据库或文件组。

文件初始化会导致这些作花费更长的时间。 但是,当数据首次写入文件时,操作系统不必用零填充文件。

即时文件初始化

在 SQL Server 中,可以即时初始化数据文件。 这样就可以快速执行前面提到的文件操作。 即时文件初始化回收已用磁盘空间,而不会用零填充该空间。 磁盘内容并没有被删除,而是在将新数据写入文件时被覆盖。 无法即时初始化日志文件。

注释

即时文件初始化仅适用于 MicrosoftWindows XP Professional 或 Windows Server 2003 或更高版本。

仅当向 SQL Server (MSSQLSERVER) 服务帐户授予SE_MANAGE_VOLUME_NAME时,即时文件初始化才可用。 Windows 管理员组的成员拥有此权限,还可以通过将其他用户添加到 “执行卷维护任务” 安全策略中来赋予他们该权限。 有关分配用户权限的详细信息,请参阅 Windows 文档。

启用 TDE 时,即时文件初始化不可用。

若要向帐户授予 Perform volume maintenance tasks 权限,请执行以下步骤:

  1. 在将创建备份文件的计算机上,打开 Local Security Policy 应用程序(secpol.msc)。

  2. 在左窗格中,展开 “本地策略”,然后单击“ 用户权限分配”。

  3. 在右窗格中,双击“执行卷维护任务”。

  4. 单击“ 添加用户或组 ”,并添加用于备份的任何用户帐户。

  5. 单击“ 应用”,然后关闭所有 Local Security Policy 对话框。

安全注意事项

由于已删除的磁盘内容仅在新数据写入文件时被覆盖,因此可能会由未经授权的主体访问已删除的内容。 虽然数据库文件附加到 SQL Server 实例,但此信息泄露威胁由文件上的自由访问控制列表(DACL)减少。 此 DACL 仅允许对 SQL Server 服务帐户和本地管理员进行文件访问。 但是,当文件被断开连接时,没有 SE_MANAGE_VOLUME_NAME 的用户或服务可能会访问该文件。 备份数据库时存在类似的威胁。 如果备份文件未使用适当的 DACL 保护,则已删除的内容可能可供未经授权的用户或服务使用。

如果可能泄露已删除的信息是一个需要关注的问题,则应执行以下一项或两项措施:

  • 始终确保任何分离的数据文件和备份文件都具有严格的 DACL。

  • 通过从 SQL Server 服务帐户撤消SE_MANAGE_VOLUME_NAME来禁用 SQL Server 实例的即时文件初始化。

注释

禁用即时文件初始化只会影响在撤销用户权限后创建或增加的文件。

另请参阅

CREATE DATABASE (SQL Server Transact-SQL)