我有一个损坏的数据库,我不知道原因,它是一个应用程序的数据库,其分销商从未发生过这种损坏。
因此我尝试使用 REPAIR_ALLOW_DATA_LOSS 进行 DBCC,按照以下建议进行操作:
但它不起作用。
我还能尝试什么?我看到有承诺修复数据库的工具(首先在谷歌搜索https://www.stellarinfo.com/gdc/sql/sql-server-database-repair-tool.php中找到),但我想知道我是否应该将我的数据库的命运委托给黑匣子?好的,我当然可以备份,但在绝望地购买工具之前,我想寻求更多建议。或者这些工具只是运行 DBCC,因此毫无用处……
这是显示给我的错误类型DBCC CHECKDB('My_DB') WITH NO_INFOMSGS, ALL_ERRORMSGSshows
(我有很多这样的错误)
Msg 8939, Level 16, State 98, Line 7 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 3759437827725787136 (type Unknown), page (13558:888026339). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 133129 and -14.
尝试修复数据丢失
ALTER DATABASE TW SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
BEGIN TRANSACTION;
DBCC CHECKDB ('My_DB', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE TW SET MULTI_USER;
COMMIT;
我有:
消息 8939,级别 16,状态 98,第 3 行表错误:对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID -9222773885349068800(类型未知),页面(15657:-1933734559)。测试(IS_OFF(BUF_IOERR,pBUF->bstat))失败。值为 2057 和 -4。修复此错误需要先更正其他错误。
我能做些什么?
我还发现,查询特定表记录时,我发现一些 BLOB 已损坏。删除记录能解决此类问题吗?
谢谢!