MS SQL Server 數(shù)據(jù)修復(fù)命令

2010-08-28 10:49:35來源:西部e網(wǎng)作者:

    MS Sql Server 提供了很多數(shù)據(jù)庫修復(fù)的命令,當(dāng)數(shù)據(jù)庫質(zhì)疑或是有的無法完成讀取時(shí)可以嘗試這些修復(fù)命令。

    1. DBCC CHECKDB

    重啟服務(wù)器后,在沒有進(jìn)行任何操作的情況下,在SQL查詢分析器中執(zhí)行以下SQL進(jìn)行數(shù)據(jù)庫的修復(fù),修復(fù)數(shù)據(jù)庫存在的一致性錯(cuò)誤與分配錯(cuò)誤。

use master

declare @databasename varchar(255)

set @databasename='需要修復(fù)的數(shù)據(jù)庫實(shí)體的名稱'

exec sp_dboption @databasename, N'single', N'true' --將目標(biāo)數(shù)據(jù)庫置為單用戶狀態(tài)

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--將目標(biāo)數(shù)據(jù)庫置為多用戶狀態(tài)


然后執(zhí)行 DBCC CHECKDB('需要修復(fù)的數(shù)據(jù)庫實(shí)體的名稱') 檢查數(shù)據(jù)庫是否仍舊存在錯(cuò)誤。注意:修復(fù)后可能會(huì)造成部分?jǐn)?shù)據(jù)的丟失。

    2. DBCC CHECKTABLE

如果DBCC CHECKDB 檢查仍舊存在錯(cuò)誤,可以使用DBCC CHECKTABLE來修復(fù)。

use 需要修復(fù)的數(shù)據(jù)庫實(shí)體的名稱

declare @dbname varchar(255)

set @dbname='需要修復(fù)的數(shù)據(jù)庫實(shí)體的名稱'

exec sp_dboption @dbname,'single user','true'

dbcc checktable('需要修復(fù)的數(shù)據(jù)表的名稱',REPAIR_ALLOW_DATA_LOSS)

dbcc checktable('需要修復(fù)的數(shù)據(jù)表的名稱',REPAIR_REBUILD)

------把’ 需要修復(fù)的數(shù)據(jù)表的名稱’更改為執(zhí)行DBCC CHECKDB時(shí)報(bào)錯(cuò)的數(shù)據(jù)表的名稱

exec sp_dboption @dbname,'single user','false'

    3. 其他的一些常用的修復(fù)命令

DBCC DBREINDEX 重建指定數(shù)據(jù)庫中表的一個(gè)或多個(gè)索引

用法:DBCC DBREINDEX (表名,’’) 修復(fù)此表所有的索引。

還有其他很多修復(fù)命令,諸如DBCC CHECKIDENT 等等,用到的概率比較小,大家可以在ms sql server 的 聯(lián)機(jī)叢書中檢索一下。

關(guān)鍵詞:MSSQLServer

贊助商鏈接: