应用对象
SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Web SQL Server 2008 R2 Standard SQL Server 2008 R2 Express SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web

Microsoft在一个可下载文件中分发Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) 或 Microsoft SQL Server 2008 或 Microsoft SQL Server 2012 修补程序。 由于这些修补程序是累积的,因此每个新版本都包含上一个SQL Server 2008 R2 Service Pack 1 (SP1) 或 SQL Server 2008 或 Microsoft SQL Server 2012 更新版本中包含的所有修补程序和所有安全更新。

症状

在 Microsoft SQL Server 2008 R2、Microsoft SQL Server 2008 或 2012 Microsoft SQL Server 中还原数据库可能需要很长时间。

原因

出现此问题的原因是,当数据库中有许多 VLF 时,生成虚拟日志文件 (VLF) 列表需要很长时间。

解决方法

累积更新信息

SQL Server 2012

此问题的修补程序首次在 2012 SQL Server累积更新 1 中发布。 有关此累积更新包的详细信息,请单击下面的编号以查看Microsoft知识库中的文章:

2679368 累积更新包 1 for SQL Server 2012Note 由于内部版本是累积的,因此每个新修补程序版本都包含上一个SQL Server 2012 修补程序版本中包含的所有修补程序和所有安全修补程序。 Microsoft建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2692828 SQL Server 2012 发布后发布的 SQL Server 2012 内部版本 你必须将 SQL Server 2012 修补程序应用于 SQL Server 2012 的安装。

SQL Server 2008 Service Pack 2

此问题的修补程序首次在累积更新 8 for SQL Server 2008 Service Pack 2 中发布。 有关此累积更新包的详细信息,请单击下面的编号以查看Microsoft知识库中的文章:

2648096 SQL Server 2008 Service Pack 2 的累积更新包 8 注意 由于内部版本是累积的,因此每个新修补程序版本都包含所有修补程序和以前的 SQL Server 2008 修补程序版本中包含的所有安全修补程序。 Microsoft建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2402659 SQL Server 2008 Service Pack 2 发布后发布的 SQL Server 2008 内部版本Microsoft SQL Server 2008 修补程序是为特定的SQL Server Service Pack 2 创建。 必须将 SQL Server 2008 Service Pack 2 修补程序应用于安装 SQL Server 2008 Service Pack 2。 默认情况下,SQL Server Service Pack 中提供的任何修补程序都包含在下一个SQL Server Service Pack 中。

SQL Server 2008 Service Pack 3

此问题的修补程序首次在 SQL Server 2008 Service Pack 3 累积更新 3 中发布。 有关此累积更新包的详细信息,请单击下面的编号以查看Microsoft知识库中的文章:

2648098 SQL Server 2008 Service Pack 3 的累积更新包 3 注意 由于内部版本是累积的,因此每个新的修补程序版本都包含所有修补程序和所有安全修补程序,这些修补程序和所有安全修补程序包含在以前的 SQL Server 2008 修补程序版本中。 Microsoft建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2629969 SQL Server 2008 Service Pack 3 发布后发布的SQL Server 2008 内部版本Microsoft SQL Server 2008 修补程序是为特定的SQL Server Service Pack 3 创建的。 必须将 SQL Server 2008 Service Pack 3 修补程序应用于 SQL Server 2008 Service Pack 3 的安装。 默认情况下,SQL Server Service Pack 中提供的任何修补程序都包含在下一个SQL Server Service Pack 中。

SQL Server 2008 R2 的累积更新包 11

此问题的修补程序首次在累积更新 11 中发布。 有关如何为 SQL Server 2008 R2 获取此累积更新包的详细信息,请单击以下编号以查看Microsoft知识库中的文章:

2633145 适用于 SQL Server 2008 R2Note 的累积更新包 11 由于内部版本是累积的,因此每个新修补程序版本都包含所有修补程序和以前的 SQL Server 2008 R2 修补程序版本中包含的所有安全修补程序。 建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

981356 SQL Server 2008 R2 发布后发布的SQL Server 2008 R2 版本

SQL Server 2008 R2 SP1 的累积更新包 4

此问题的修补程序首次在累积更新 4 中发布。 有关如何为 SQL Server 2008 R2 SP1 获取此累积更新包的详细信息,请单击下面的序列号以查看Microsoft知识库中的文章:

2633146 SQL Server 2008 R2 SP1 的累积更新包 4 注意 由于内部版本是累积的,因此每个新修补程序版本都包含所有修补程序和所有安全修补程序,这些修补程序和所有安全修补程序包含在以前的 SQL Server 2008 R2 SP1 修补程序版本中。 建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2567616 SQL Server 2008 R2 SP1 发布后发布的 SQL Server 2008 R2 版本

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

更多信息

可以通过查看 SQL 错误日志文件,然后在每个事务日志备份文件中查找日志序列号 (LSN) 来检查 VLF 段的数量。 LSN 中冒号符号前面的第一个数字对应于 LSN 的数字。例如,LSN 的第一条信息性消息中的第一个数字是 1。 但是,LSN 的第二条信息性消息中的第一个数字是100001。 在此方案中,在第一条信息性消息和第二条信息性消息的时间之间使用了 100,000 个 VLF。 因此,具有许多虚拟日志Files (VLF) 的已记录碎片事务日志如下所示:

{Log 已备份。 数据库:mydbname,创建日期 (时间) :2010/07/08 (12:36:46) , 第一个 LSN:1:5068:70,最后 LSN:1:5108:1,转储设备数:1,设备信息: (FILE=1,TYPE=DISK: {'C:\folder\logbackup1.trn'}) 。 这只是一条信息性消息。 无需用户操作。日志已备份。 数据库:mydbname,创建日期 (时间) :2010/07/08 (15:36:46) , 第一个 LSN:100001:5108:1,最后 LSN:100002:5108:1,转储设备数:1,设备信息: (FILE=2,TYPE=DISK: {'C:\folder\logbackup2.trn'}) 。 这只是一条信息性消息。 无需用户操作。}

参考

有关 LSN) (日志序列号的详细信息,请访问以下 MSDN 网站:

有关日志序列号的一般信息

有关日志文件结构如何影响数据库恢复时间的详细信息,请访问以下 MSDN 网站:

日志文件结构如何影响数据库恢复时间 有关事务日志 VLF 的详细信息,请访问以下 MSDN 网站:

有关事务日志文件的一般信息

解决方法

  • 等待还原或恢复操作完成如果还原或恢复数据库时遇到性能缓慢的未恢复数据库,则可能必须等待还原或恢复操作完成。 例如,对于未恢复的数据库,你可能会在 SQL Server Management Studio (SSMS) 中看到脱机状态或正在恢复状态。 停止SQL Server通常不会缓解恢复速度缓慢,并且可能需要更多时间来重复相同的恢复分析阶段、恢复阶段或撤消阶段。

  • 避免还原包含数千个 VLF的事务日志序列 如果在使用备份文件还原和恢复数据库时遇到性能缓慢的问题,可以避免还原包含数千个 VLF 的事务日志序列。 若要标识记录的虚拟日志文件最多的备份文件,请使用以下语句查看日志备份文件中的 FirstLSN 和 LastLSN 列: RESTORE HEADERONLY FROM DISK='C:\folder\file.trn'你可以决定避免还原日志备份文件。 或者,可以在 RESTORE 命令中使用 STOP AT 语句来避免事务日志的高度碎片部分。 如果未在故障恢复方案中将日志序列完全还原到最新时间点,则数据库SQL Server中会发生数据丢失。 由于并非所有事务都在保留,因此会发生此数据丢失。 因此,有一个业务权衡决策。 可以完全还原高度碎片化的事务日志。 但是,此操作可能需要数小时。 或者,可以在恢复中使用 STOP AT 语句在日志的碎片化部分之前停止恢复。 但是,省略的任何缺失事务都将丢失。注意 如果不安装此修补程序,在重启SQL Server后,通常无法安全地进行快速恢复。 SQL Server必须找到 VLF 列表以分析日志文件,重做已完成的事务,然后撤消不完整的事务才能完成恢复,以便安全地使数据库联机。 在恢复期间,无法安全地跳过事务。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。