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 或 Microsoft SQL Server 2012 中还原数据库可能需要较长时间。

原因

出现此问题的原因是,当数据库中存在许多 VLFs 时,构建虚拟日志文件(VLF)列表需要花费很长时间。

解决方案

累积更新信息

SQL Server 2012

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

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

2692828 在 SQL Server 2012 发布后发布的 SQL Server 2012 版本 必须将 SQL Server 2012 修补程序应用到 SQL Server 2012 的安装。

SQL Server 2008 Service Pack 2

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

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

2402659 发布 SQL Server 2008 Service Pack 2 后发布的 SQL Server 2008 版本 为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 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 的累积更新程序包 3 Service Pack 3注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2629969 发布 SQL server 2008 Service Pack 3 后发布的 SQL Server 2008 版本 为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 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 R2 的累积更新包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 段数。 LSNs 中冒号符号前面的第一个数字对应于 LSN 的编号。例如,LSN 的第一条信息消息中的第一个数字是 1。 但是,LSN 的第二条信息消息中的第一个数字是 100001。 在此方案中,有 100000 VLFs 在第一条信息消息和第二条信息消息之间的时间之间使用。 因此,具有许多虚拟日志文件(VLFs)的已记录碎片事务日志类似于以下内容:

{已备份日志。 数据库: mydbname,创建日期(time): 2010/07/08 (12:36:46),第一条 lsn:1:5068:70,最后一个 LSN:1:5108:1,转储设备数:1,设备信息:(文件 = 1,TYPE = DISK: {' C:\folder\logbackup1.trn '})。 这只是一条信息性消息。 无需用户操作。日志已备份。 数据库: mydbname,创建日期(time): 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 网站:

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

有关事务日志文件的常规信息

解决方法

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

  • 避免还原包含上千个 VLFs 的事务日志序列如果使用备份文件还原和恢复数据库时遇到性能较慢的情况,则可以避免还原包含上千个 VLFs 的事务日志序列。 若要标识已录制的虚拟日志文件最多的备份文件,请使用以下语句查看日志备份文件中的 FirstLSN 和 LastLSN 列:从磁盘还原 HEADERONLY = ' C:\folder\file.trn ' 您可以决定避免还原日志备份文件。 或者,你可以使用 RESTORE 命令中的 STOP AT 语句来避免事务日志的非常零碎的部分。 如果在故障恢复方案中不将日志序列完全还原到最新时间点,则数据库 SQL Server 中会丢失数据。 发生此数据损失是因为并非所有事务都在保留。 因此,有一种业务折衷决策。 你可以完全还原高碎片的事务日志。 但是,此操作可能需要几个小时。 或者,你可以使用恢复中的 STOP AT 语句在日志的非常零碎的部分之前停止恢复。 但是,省略的任何缺少的交易将丢失。注意 如果不安装此修补程序,则在重新启动 SQL Server 后,通常不存在用于加速恢复的安全 recourse。 SQL Server 必须定位 VLFs 列表以分析日志文件、恢复已完成的事务,然后撤消未完成的事务以完成恢复,以使数据库安全联机。 恢复期间无法安全地跳过事务。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×