詳解SQL Server數據修復命令DBCC的使用

嚴重級別爲 21 表示可能存在數據損壞。 可能的緣由包括損壞的頁鏈、損壞的 IAM 或該對象的 sys.objects目錄視圖中存在無效條目。 這些錯誤一般由硬件或磁盤設備驅動程序故障而引發。 sql

 

 

MS Sql Server 提供了不少關於數據庫修復的命令,當MS Sql Server 數據庫遭到質疑或者是有的沒法完成讀取時能夠嘗試這些修復命令。數據庫

 1. DBCC CHECKDB服務器

  重啓服務器spa

    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(’須要修復的數據庫實體的名稱’) 檢查數據庫是否仍舊存在錯誤。注意:修復後可能會形成部分數據的丟失。code

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 (表名,’’) 修復此表全部的索引。blog

相關文章
相關標籤/搜索