淺析SQL Server數(shù)據(jù)修復命令DBCC的使用
SQL Server數(shù)據(jù)庫提供了修復命令DBCC,當SQL Server數(shù)據(jù)庫遭到質(zhì)疑或者是有的無法完成讀取時可以嘗試用此命令來修復。以下是一些常見的DBCC修復命令,希望會給讀者帶來幫助。
1. DBCC CHECKDB
重啟服務器后,在沒有進行任何操作的情況下,在SQL查詢分析器中執(zhí)行以下SQL進行數(shù)據(jù)庫的修復,修復數(shù)據(jù)庫存在的一致性錯誤與分配錯誤。
- use master
- declare @databasename varchar(255)
- set @databasename=’需要修復的數(shù)據(jù)庫實體的名稱’
- exec sp_dboption @databasename, N’single’, N’true’ –將目標數(shù)據(jù)庫置為單用戶狀態(tài)
- dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
- dbcc checkdb(@databasename,REPAIR_REBUILD)
- exec sp_dboption @databasename, N’single’, N’false’–將目標數(shù)據(jù)庫置為多用戶狀態(tài)
然后執(zhí)行 SQL Server數(shù)據(jù)修復命令DBCC CHECKDB(’需要修復的數(shù)據(jù)庫實體的名稱’) 檢查數(shù)據(jù)庫是否仍舊存在錯誤。注意:修復后可能會造成部分數(shù)據(jù)的丟失。
2. DBCC CHECKTABLE
如果DBCC CHECKDB 檢查仍舊存在錯誤,可以使用DBCC CHECKTABLE來修復。
- use 需要修復的數(shù)據(jù)庫實體的名稱
- declare @dbname varchar(255)
- set @dbname=’需要修復的數(shù)據(jù)庫實體的名稱’
- exec sp_dboption @dbname,’single user’,'true’
- dbcc checktable(’需要修復的數(shù)據(jù)表的名稱’,REPAIR_ALLOW_DATA_LOSS)
- dbcc checktable(’需要修復的數(shù)據(jù)表的名稱’,REPAIR_REBUILD)
——把‘需要修復的數(shù)據(jù)表的名稱’更改為執(zhí)行SQL Server數(shù)據(jù)修復命令DBCC CHECKDB時報錯的數(shù)據(jù)表的名稱exec sp_dboption @dbname,’single user’,'false’。
3. 其他常用的修復命令
DBCC DBREINDEX 重建指定數(shù)據(jù)庫中表的一個或多個索引。
用法:DBCC DBREINDEX (表名,’’) 修復此表所有的索引。
【編輯推薦】