首先,感谢您查看这个 - 我们的生产环境中有一个大型数据库(1.26 TB),其中有几百个损坏的页面并且已经完成了几个月,所以所有的损坏都是一样的可用的备份。
上周晚些时候,我被拖入了这个阶段,因为似乎由于损坏,重新组织索引的预定作业已经失败了一段时间,我们现在处于最大和最常用表上的索引范围在 50% 和80% 的碎片严重降低了应用程序的性能。
我对如何解决这种情况提出了许多想法(相信我,我对替代方案持开放态度),从我读到的内容来看,我认为以下内容听起来是个好主意:
将其他副本重命名为 DbNameHereCorrupt,尝试使用以下代码运行页面级还原:
alter database DbNameHereCorrupt set single_user with rollback immediate
--set db to FULL recovery mode
alter database DbNameHereCorrupt set recovery full
--Declare paths for backups
declare @fullBackupPath nvarchar(max) = N'D:\Restore\DbNameHereCorrupt-FullBackup.bck'
declare @tranLogBackupPath nvarchar(max) = N'D:\Restore\DbNameHereCorrupt-LogBackup.bck'
--Take full backup to begin new TLogChain
backup database DbNameHereCorrupt to disk = @fullBackupPath with init, differential;
--Immediately …Run Code Online (Sandbox Code Playgroud)