MS SQL數據庫修復札記

本文轉自百度id:zqgm0412空間http://hi.baidu.com/zqgm0412/blog/item/d367d4109464b9f7c2ce790a.html

MSSQL 數據庫修復,語句參考及單用戶模式的處理

修理還原一個庫的時候,碰到庫不完整的情況,採用DBCC修復。

DBCC CHECKALLOC (Transact-SQL)
檢查指定數據庫的磁盤空間分配結構的一致性。http://msdn.microsoft.com/zh-cn/library/ms188422.aspx

DBCC CHECKDB (Transact-SQL)

 

通過執行下列操作檢查指定數據庫中所有對象的邏輯和物理完整性。http://msdn.microsoft.com/zh-cn/library/ms176064.aspx

DBCC CHECKCATALOG (Transact-SQL)

 

檢查指定數據庫內的目錄一致性。數據庫必須聯機。http://msdn.microsoft.com/zh-cn/library/ms186720.aspx

DBCC CHECKFILEGROUP (Transact-SQL)

 

檢查當前數據庫中指定文件組中的所有表和索引視圖的分配和結構完整性。http://msdn.microsoft.com/zh-cn/library/ms187332.aspx

DBCC CHECKTABLE (Transact-SQL)
檢查組成表或索引視圖的所有頁和結構的完整性。http://msdn.microsoft.com/zh-cn/library/ms174338.aspx

其中修復數據庫語句 DBCC CHECKDB 的三個重要參數:

快速修復:DBCC CHECKDB ('databasename', REPAIR_FAST) 
重建索引並修復:DBCC CHECKDB ('databasename', REPAIR_REBUILD)
如果必要允許丟失數據修復:DBCC CHECKDB ('databasename', REPAIR_ALLOW_DATA_LOSS)

如果出現錯誤:未處理修復語句。數據庫需處於單用戶模式下。

可以先啓用單用戶模式,方法如下執行存儲過程:

use databasename
go
sp_dboption databasename,single,true

====END=====

或者在企業管理器中(以sql2000爲例),選中要置於單用戶模式的數據庫,然後“右鍵”——“屬性”——“選項”選項卡——“訪問”點選限制訪問,選擇單用戶即可。

注意:單用戶模式下,對數據庫啓動一個連接,企業管理器或者查詢分析器,二選一。

如果知道是哪個表出錯,可以選擇DBCC CHECKTABLE:檢查指定表或索引視圖的數據、索引及 textntext 和 image 頁的完整性。

其語法爲:DBCC CHECKTABLE

    ( 'table_name' | 'view_name'
        
NOINDEX
            | index_id
            | { REPAIR_ALLOW_DATA_LOSS
                | REPAIR_FAST
                | REPAIR_REBUILD }
        ] 
    )    [ WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ]
                    [ [ TABLOCK ] ]
                    [ [ ESTIMATEONLY ] ]
                    [ [ PHYSICAL_ONLY ] ] 
                } 
        ] 

另外有個有趣的命令,可以顯示錯誤表頁的訊息:(顯示1:25錯誤)

dbcc traceon(3604) 
dbcc page(DB_name,1,25,3)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章