詳解SQL Server數據修復命令DBCC的使用
阿新 • • 發佈:2018-08-31
zh-cn 數據庫修改 對象 數據 net tar declare 表名 style
嚴重級別為 21 表示可能存在數據損壞。 可能的原因包括損壞的頁鏈、損壞的 IAM 或該對象的 sys.objects目錄視圖中存在無效條目。 這些錯誤通常由硬件或磁盤設備驅動程序故障而引起。
MS Sql Server 提供了很多關於數據庫修復的命令,當MS Sql Server 數據庫遭到質疑或者是有的無法完成讀取時可以嘗試這些修復命令。
1. DBCC CHECKDB
重啟服務器
use master declare @databasename varchar(255) set @databasename=’需要修復的數據庫實體的名稱’exec sp_dboption @databasename, N’single’, N’true’ –將目標數據庫置為單用戶狀態 dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N’single’, N’false’–將目標數據庫置為多用戶狀態
sql2012將目標數據庫修改單用戶狀態語句
ALTER DATABASE DT_CMS_OJJ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
sql2012將目標數據庫修改單用戶狀態語句
Alter database DT_CMS_OJJ set multi_user
然後執行 SQL Server數據修復命令DBCC CHECKDB(’需要修復的數據庫實體的名稱’) 檢查數據庫是否仍舊存在錯誤。註意:修復後可能會造成部分數據的丟失。
2. DBCC CHECKTABLE
如果DBCC CHECKDB 檢查仍舊存在錯誤,可以使用DBCC CHECKTABLE來修復。
use 需要修復的數據庫實體的名稱 declare @dbname varchar(255) set @dbname=’需要修復的數據庫實體的名稱’ exec sp_dboption @dbname,’single user’,‘true’ dbcc checktable(’需要修復的數據表的名稱’,REPAIR_ALLOW_DATA_LOSS) dbcc checktable(’需要修復的數據表的名稱’,REPAIR_REBUILD) —把’ 需要修復的數據表的名稱’更改為執行SQL Server數據修復命令DBCC CHECKDB時報錯的數據表的名稱 exec sp_dboption @dbname,’single user’,‘false’
3. 其他的一些常用的修復命令
DBCC DBREINDEX 重建指定數據庫中表的一個或多個索引
用法:DBCC DBREINDEX (表名,’’) 修復此表所有的索引。
詳解SQL Server數據修復命令DBCC的使用