我们有一个非常大的数据库(~6TB),其事务日志文件被删除(SQL Server 关闭时。我们尝试过:
...但到目前为止没有任何效果。
我们目前正在运行:
ALTER DATABASE <dbname> REBUILD
LOG ON (NAME=<dbname>,FILENAME='<logfilepath>')
Run Code Online (Sandbox Code Playgroud)
...但考虑到数据库的大小,这可能需要几天时间才能完成。
上面的命令和下面的命令有区别吗?
DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS)
Run Code Online (Sandbox Code Playgroud)
我们应该执行REPAIR_ALLOW_DATA_LOSS
吗?
值得注意的是,数据来自其他来源,因此可以重建数据库,但是我们怀疑修复数据库比再次重新插入所有数据要快得多。
更新
对于那些记分者:ALTER DATABASE/REBUILD LOG
命令在大约 36 小时后完成并报告:
警告:数据库“dbname”的日志已重建。事务一致性已丢失。RESTORE 链被破坏,服务器不再拥有先前日志文件的上下文,因此您需要知道它们是什么。
您应该运行 DBCC CHECKDB 来验证物理一致性。数据库已置于 dbo-only 模式。当您准备好使数据库可供使用时,您将需要重置数据库选项并删除任何额外的日志文件。
然后我们运行了一个DBCC CHECKDB
(大约需要 13 小时),它成功了。假设我们都了解了数据库备份的重要性(以及授予项目经理访问服务器的权限......)。