症状
请考虑以下情况:
- 您使用的是 Microsoft SQL Server 2016、2014或2012。
- 你有一个数据库,它是 AlwaysOn 可用性组的一部分。
- 在主副本上,收缩数据库文件以减小其大小。
- 主副本将事务日志中记录的所有更改发送到辅助副本。
- 在辅助副本上,”恢复” 线程将事务日志中的更改应用到属于可用性组的数据库。

原因
如果数据库引擎在系统页面(GAM、PFS)上遇到顺序 LSNs,则在恢复过程中应用更改时会出现此问题。
解决方案:
在以下 SQL Server 累积更新中首先修复此问题:
- SQL Server 2016 的累积更新1
- SQL Server 2014 SP1 的累积更新8
- SQL Server 2012 SP3 的累积更新6
- SQL Server 2012 SP2 的累积更新15
建议:安装 SQL Server 的最新累积更新
此更新可防止出现此问题。 如果问题已出现,请按照以下步骤重新加入 AlwaysOn 可用性组:
- 删除现有的 AlwaysOn 辅助副本。
- 对受影响的数据文件运行以下命令以从数据库中删除未分配的空间:
DBCC SHRINKFILE(<file_id>, TRUNCATEONLY)
- 备份数据库和日志文件。
- 还原 AlwaysOn 辅助副本上的数据库和日志。
- 加入 “AlwaysOn 可用性” 组。
文章转载请说明出处:八零岁月 » SQL由于截断事务日志,导致还原数据库日志失败
评论前必须登录!