你目前正处于脱机状态,正在等待 Internet 重新连接

数据库操作需要很长的时间才能完成,或会触发这些事件的错误时事务日志具有多个虚拟日志文件

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 2028436
症状
在 SQL Server 2008年环境中,您可能会遇到下列症状:
  • 一个或多个数据库需要很长时间才能完成 SQL Server 启动时恢复。
  • 当执行恢复的数据库时,需要很长时间才能完成。
  • 试图附加数据库需要很长时间才能完成。
  • 当您尝试建立数据库镜像时,则会遇到错误消息 1413年、 1443年和 1479,指示超时。
  • 当您尝试还原的数据库时,您会遇到像 701 与内存相关的错误。

检查 SQL Server 错误日志时,您会发现数据库恢复过程的分析阶段之前,花费很长的时间。
2010-05-08 14:42:38.65 spid22s 启动数据库 lot_of_vlfs。
2010-05-08 14:46:04.76 spid22s 分析的数据库 lot_of_vlfs (16) 为的 0%已完成 (大约 0 秒保持)。第一阶段为 3。这是信息性消息。不不需要任何用户操作。

原因
在数据库恢复过程的初始阶段,SQL Server 执行所有虚拟日志文件的所有事务日志文件中查找。生成的所有虚拟日志文件的列表。此过程可能需要很长时间,具体取决于在特定数据库中的虚拟日志文件数目。数据库可能会产生大量的虚拟日志文件如果事务日志遇到频繁自动增长与发生的非常小的尺寸增量的增长。

通常首先遇到时虚拟日志文件的编号范围内的几个几十万"症状"一节中提到的问题。
解决方案
从下面的博客的方法可用于在特定数据库中找到的虚拟日志文件数:
日志文件结构如何影响数据库恢复时间

您可能必须保持在一个合理的数字,如 10000 个虚拟日志文件的总数。

您可以重新配置事务日志文件,包含有限的数量的虚拟日志文件使用以下方法:
  1. 收缩事务日志文件、 文件增长到所需大小使用 TSQL 语句手动<database name="">修改文件 (名称 = 逻辑文件名的事务日志,大小 = <required size="">)</required> </database>
  2. 重新生成事务日志文件,然后手动增加到所需大小的事务日志文件:
    1. 如果数据库上一次关闭干净 (不带用户或未结交易记录),可以使用创建数据库的 FOR ATTACH_REBUILD_LOG 选项来创建新的事务日志文件。
    2. 如果读/写数据库有一个日志文件当前不可用的,如果关闭了数据库清洁 [有没有用户或未结交易记录] 之前附加操作,创建的数据库的连接选项会自动重新生成日志文件,并更新主文件。

重新配置事务日志文件的布局后,检查并进行必要的更改为自动增长设置事务日志文件,以避免在未来遇到同样的问题。

注意:在执行这些操作之前,请确保具有有效恢复备份,以防以后会遇到的一些问题。

2524743 修复: 恢复的时间长于预期为 SQL Server 2008年中或在 SQL Server 2008 R2 环境中的数据库

2455009 修复: 慢时如果有许多 Vlf 在 SQL Server 2005 中,SQL Server 2008年中或在 SQL Server 2008 R2 中的事务日志恢复数据库

2653893 修复: 花费很长时间才能恢复 SQL Server 2008 R2 中的数据库

979042 修复: 主体不恢复数据库如果数据库有大量的虚拟日志文件,SQL Server 2005 中或在 SQL Server 2008年中

2882905 当启动 SQL Server 实例或还原或附加数据库时,将记录 9017 信息性消息

更多信息
虚拟日志文件的完整信息,请参阅以下联机丛书主题: 事务日志物理体系结构

有关此问题的详细信息,请参阅以下资源:

日志文件结构如何影响数据库恢复时间
事务日志 Vlf 的太多或太少?
1413 错误时启动数据库镜像--虚拟日志文件的数量就太多了吗?

此外应注意增长事务日志的已知问题:

2633151 SQL Server 数据库事务日志文件不会按配置的文件增长值增长

注意:了解 SQL Server 2014年中 VLF 创建算法做了重大更改:


有关产品或工具,自动检查此条件和产品版本的 SQL Server 上的 SQL Server 实例的详细信息,请参阅下表:

规则软件规则标题规则说明对规则进行评估所依据的产品版本
SQL Server 2008 R2 最佳实践分析器 (SQL Server 2008 R2 BPA)




具有大量的 VLF 存在数据库





SQL Server 2008 R2 最佳实践分析器 (SQL Server 2008 R2 BPA) 提供了一条规则来检测的情况,数据库中包含大量的虚拟日志文件。SQL Server 2008 R2 BPA 支持 SQL Server 2008年和 SQL Server 2008 R2。

如果您运行 BPA 工具和遇到的错误的数据库引擎的数据库有大量存在,VLF 标题则需要验证受影响的数据库的虚拟日志文件数目并重新配置事务日志文件。
SQL Server 2008
SQL Server 2008 R2






SQL Server 2012年最佳实践分析器 (SQL Server 2012 BPA)



具有大量的 VLF 存在数据库




SQL Server 2012年最佳实践分析器 (SQL Server 2012 BPA) 提供了一条规则来检测的情况,数据库中包含大量的虚拟日志文件。

如果您运行 BPA 工具和遇到的错误的数据库引擎的数据库有大量存在,VLF 标题则需要验证受影响的数据库的虚拟日志文件数目并重新配置事务日志文件。
SQL Server 2012








警告:本文已自动翻译

属性

文章 ID:2028436 - 上次审阅时间:08/07/2015 03:47:00 - 修订版本: 4.0

Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web

  • kbmt KB2028436 KbMtzh
反馈