某些数据库操作需要一个很长的持续时间来完成或事务日志中有多个虚拟日志文件时遇到错误

文章翻译 文章翻译
文章编号: 2028436 - 查看本文应用于的产品
展开全部 | 关闭全部

症状

您可能会遇到以下问题:
  1. 一个或多个数据库花很长的时间才能完成恢复 SQL Server 启动过程中
  2. 在执行还原的数据库时,需要很长时间才能完成
  3. 试图附加数据库需要很长时间才能完成
  4. 当您尝试安装程序数据库镜像所遇到的错误消息 1413年、 1443年和 1479年表示超时。
  5. 您会遇到内存相关 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 秒)。第 1 阶段 3。这是信息性消息。不不需要任何用户操作。

原因

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

通常情况下,启动遇到症状部分提到的虚拟日志文件的数字的范围内的几个几十万个问题。

解决方案

从下面的网络日志的方法可用于在特定数据库中找到的虚拟日志文件的数目:
日志文件结构如何影响数据库的恢复时间
您可能需要保留下像 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 年有大量的虚拟日志文件

更多信息

虚拟日志文件的完整信息,请参阅联机丛书的主题: 事务日志物理体系结构
有关此问题的讨论:
日志文件结构如何影响数据库的恢复时间
事务日志 Vlf-太多或太少?
启动数据库镜像--多少个虚拟日志文件时的 1413年错误是否太多?

此外需要注意不断增长的事务日志的已知问题:

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


有关产品或工具自动检查此产品版本的 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 支持 2008 的 SQL Server 和 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








属性

文章编号: 2028436 - 最后修改: 2012年5月24日 - 修订: 2.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
关键字:?
kbmt KB2028436 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 2028436
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com