1. 程式人生 > >SQL Server處理損壞的表

SQL Server處理損壞的表

症狀:無法備份。

在 drop table 時報錯:

Location:  AllocPageRef.cpp:62
Expression:  aid == id
SPID:  71
Process ID:  4388    (這個是sqlserver 的程序)  
訊息 3624,級別 20,狀態 1,第 1 行
系統斷定檢查已失敗。有關詳細資訊,請檢視 SQL Server 錯誤日誌
訊息 0,級別 20,狀態 0,第 0 行

當前命令發生了嚴重錯誤。應放棄任何可能產生的結果。

處理手段:

--1. 看下到底有哪些錯誤資訊, 具體是哪些表有問題, 記錄下來
EXEC xp_readerrorlog

--2. 試著修復表
--   我用的是 db1 庫, 具體的庫名、表名你要替換
USE [master]
GO
ALTER DATABASE [db1] SET  SINGLE_USER WITH NO_WAIT
GO
USE db1
GO
DBCC CHECKTABLE('[dbo].[t]',REPAIR_ALLOW_DATA_LOSS); 
GO
ALTER DATABASE [db1] SET  MULTI_USER WITH NO_WAIT
GO

無效後試著禁用或刪除相關的表的索引, 再修復, 成功。