
處理數據庫置疑的方法
處理數據庫置疑的方法
先分離數據庫
企業管理器--右鍵置疑的數據庫--所有任務--分離數據庫
然后備份你的置疑數據庫的文件,再按下面的步驟處理:
1.新建一個同名的數據庫
2.再停掉sqlrver
3.用置疑數據庫的文件覆蓋掉這個新建的同名數據庫,只覆
蓋mdf文件,日志文件不要覆蓋
4.再重啟sqlrver
5.此時打開企業管理器時新建的同名數據庫會出現置疑,先
不管,打開查詢分析器執行下面的語句(注意修改其中的數據庫
名)
重建日志文件,經過修復后數據就可以正常分離并附加了,
語句中“C:置疑的同名數據庫名_”是重建日志日志文件存
放路徑,
在重建日志后,最好將數據庫分離并將重新創建的日志文件
拷貝到數據庫文件所在目錄,再重新進行附加。
--重建日志文件,修復損壞的日志
USEMASTER
GO
SP___RE'ALLOW__',1__GUREWITH__E
GO
UPDATE__BASESSETSTATUS=__WHERENAME='置疑的同
名數據庫名'
Go
dbccrebuild_log('置疑的同名數據庫名','C:置疑的同名數據
庫名_')
GO
updatesysdatabaststatus=28wherename='置疑的同
名數據庫名'
Go
sp_configure'allowupdates',0reconfigurewithoverride
Go
6、數據庫修復后還需要進行數據庫檢測,看是否存在一些
錯誤,數據庫檢測需要用DBCC__命令,如下:
DBCC__('置疑的同名數據庫名')
如果檢測到錯誤,需要進行修復,但修復數據庫需要在單用
戶模式下,請使用以下語句,
ALTER__E置疑的同名數據庫名SETSINGLE_USERWITH
__K__TE
GO
DBCC__('置疑的同名數據庫名',REPAIR___)
GO
ALTER__E置疑的同名數據庫名SETMULTI_USERWITH__K
__TE
GO
如果還有錯誤,執行下面的語句
DBCC__('數據庫名',REPAIR_ALLOW_DATA_LOSS)
-------(執行一次如果還有錯誤,可以多執行幾次)
7、有時通過DBCC__能夠修復數據庫中的錯誤,但有時不
能修復,可能需要對單個有問題的數據表進行修復,需要使用
DBCC__BLE('有問題的數據表名',REPAIR___)命令,詳細請看
聯機幫助
8、DBCC__命令介紹
檢查指定數據庫中的所有對象的分配和結構完整性。
語法
DBCC__
('databa_name'
[,__
|{REPAIR_ALLOW_DATA_LOSS
|REPAIR_FAST
|REPAIR___
}]
)[WITH{[ALL___GS]
[,[NO___S]]
[,[__]]
[,[__EONLY]]
[,[__L_ONLY]]
}
]
參數
'databa_name'
是要對其中的所有對象分配和結構完整性進行檢查的數據
庫。如果未指定,則默認為當前數據庫。數據庫名稱必須符合標
識符的規則。有關更多信息,請參見使用標識符。
__
指定不檢查非系統表的非聚集索引。__減少執行總時間,因
為它不對用戶定義的表的非聚集索引進行檢查。__對系統表沒
有影響,因為DBCC__總是對所有系統表索引進行檢查。
REPAIR_ALLOW_DATA_LOSS|REPAIR_FAST|REPAIR___
指定DBCC__修復發現的錯誤。給定的databa_name
必須在單用戶模式下以使用修復選項,它可以是下列值之一。
值描述
REPAIR_ALLOW_DATA_LOSS執行由REPAIR___完成的所
有修復,包括對行和頁進行分配和取消分配以改正分配錯誤、結
構行或頁的錯誤,以及刪除已損壞的文本對象。這些修復可能會
導致一些數據丟失。修復操作可以在用戶事務下完成以允許用戶
回滾所做的更改。如果回滾修復,則數據庫仍會含有錯誤,應該
從備份進行恢復。如果由于所提供修復等級的緣故遺漏某個錯誤
的修復,則將遺漏任何取決于該修復的修復。修復完成后,備份
數據庫。REPAIR_FAST進行小的、不耗時的修復操作,如修復
非聚集索引中的附加鍵。這些修復可以很快完成,并且不會有丟
失數據的危險。
REPAIR___執行由REPAIR_FAST完成的所有修復,包括需
要較長時間的修復(如重建索引)。執行這些修復時不會有丟失
數據的危險。
WITH
指定有關下列內容的選項:返回錯誤信息的數量、獲得的鎖
或估計的tempdb要求。
ALL___GS
顯示每個對象不受限制的錯誤數。如果沒有指定ALL___GS,
每個對象至多顯示200個錯誤信息。按對象ID對錯誤信息進
行排序(從tempdb中生成的消息除外)。
NO___S
禁止顯示所有信息性消息(嚴重級別10)和關于所用空間
的報告。
__
導致DBCC__獲得共享表鎖。__可使DBCC__在負荷較
重的數據庫上
運行得更快,但DBCC__運行時會減少數據庫上可獲得的
并發性。
__EONLY
顯示估計的tempdb空間大小,要運行帶有所有其它指定
選項的DBCC__則需要該空間。不執行該檢查。
__L_ONLY
僅限于檢查頁和記錄標題物理結構的完整性,以及頁對象
ID和索引ID與分配結構之間的一致性。該檢查旨在以較低的
開銷檢查數據庫的物理一致性,同時還檢測會危及用戶數據安全
的殘缺頁和常見的硬件故障。__L_ONLY始終意味著NO___S,并
且不能與任何修復選項一起使用。
注釋
DBCC__對索引視圖執行物理一致性檢查。只用于向后兼容
的__選項也適用于索引視圖上的任何輔助索引。
DBCC__是最安全的修復語句,因為它對最多的可能出現的
各種錯誤進行標識和修復。如果只報告數據庫中有分配錯誤,請
執行帶修復選項的DBCC__LOC以對這些錯誤進行修復。然而,
若要確保正確修復所有錯誤(包括分配錯誤),請執行帶修復選
項的DBCC__,而不要執行帶修復選項的DBCC__LOC。
DBCC__對數據庫中所有內容的完整性進行驗證。如果當前
正在執行或最近已執行DBCC__,則不需要運行DBCC__LOC
或DBCC__BLE。
DBCC__執行同樣的檢查,仿佛是對數據庫中的每個表執行
DBCC__LOC語句和DBCC__BLE語句。
默認情況下,DBCC__不獲取表鎖。但它獲取架構鎖,該鎖
防止對元數據進行更改,但允許更改數據。獲取的架構鎖將防止
用戶得到排它表鎖,在生成聚集索引、除去任何索引或截斷表時
需要排它表鎖。
DBCC語句收集信息,然后掃描日志以查找所做的任何其它
更改,并在掃描的結尾將兩組信息合并在一起以產生數據的一致
視圖。
如果指定__選項,DBCC__將獲取共享表鎖。這樣可允許
某些類別的錯誤有更詳細的錯誤信息,并通過避免使用事務日志
數據而將所要求的tempdb空間大小降為最低。__選項不阻止
日志截斷并使命令可以更快地運行。
DBCC__對數據庫中每個表的text、ntext和image頁的
鏈接和大小及數據庫中所有頁的分配進行檢查。
對于數據庫中每個表,DBCC__檢查其:
索引和數據頁是否已正確鏈接。
索引是否按照正確的順序排列。
各指針是否一致。
每頁上的數據是否均合理。
頁面偏移量是否合理。
錯誤表示數據庫中的潛在問題,應該立即改正。
默認情況下,DBCC__對對象執行并行檢查。并行度由查詢
處理器自動確定。最大并行度的配置方式與并行查詢相同。使用
sp_configure系統存儲過程限制可用于DBCC檢查的最大處理
器數。有關更多信息,請參見maxdegreeofparallelism選項。
使用跟蹤標記2528可禁用并行檢查。有關更多信息,請參
見跟蹤標記。
結果集
不管是否指定任何選項(NO___S或__選項除外),如果未
指定數據庫,DBCC__返回當前數據庫的以下結果集(值可能會
變化):
DBCCresultsfor'master'.
DBCCresultsfor'sysobjects'.
DBCCresultsfor'sysindexes'.
Thereare80rowsin3pagesforobject'sysindexes'.
'...'
DBCCresultsfor'spt_provider_types'.
Thereare23rowsin1pagesforobject'spt_provider_types'.
__found0allocationerrorsand0consistencyerrorsin
databa'master'.
printederrormessages,
contactyoursystemadministrator.
如果指定NO___S選項,DBCC__將返回以下結果集(消
息):
Thecommand(s)completedsuccessfully.
如果指定__EONLY選項,DBCC__將返回以下結果集。
EstimatedTEMPDBspaceneededfor__LOC(KB)
-------------------------------------------------
13
(1row(s)affected)
EstimatedTEMPDBspaceneededfor__BLES(KB)
--------------------------------------------------
57
(1row(s)affected)
printederrormessages,
contactyoursystemadministrator.
權限
DBCC__權限默認授予sysadmin固定服務器角色或
db_owner固定數據庫角色的成員且不可轉讓。
示例
A.檢查當前數據庫和pubs數據庫
下例對當前數據庫和pubs數據庫執行DBCC__。
--Checkthecurrentdataba.
DBCC__
GO
--Checkthepubsdatabawithoutnonclusteredindexes.
DBCC__('pubs',__)
GO
B.檢查當前數據庫,禁止顯示信息性消息
下例檢查當前數據庫,并禁止顯示所有信息性消息。
DBCC__WITHNO___S
GO
-------李慶軍修改
UMaster
Go
sp_configure'allowupdates',1
reconfigurewithoverride
Go
updatesysdatabaststatus=__wherename='accdb'
dbccrebuild_log(accdb)
updatesysdatabaststatus=28wherename='accdb'
Go
sp_configure'allowupdates',0reconfigurewithoverride
Go
DBCC__('Accdb')
ALTER__EAccdbSETSINGLE_USERWITH__K__TE
GO
DBCC__('Accdb',REPAIR___)
GO
ALTER__EAccdbSETMULTI_USERWITH__K__TE
GO
DBCC__('Accdb',REPAIR_ALLOW_DATA_LOSS)
本文發布于:2023-03-11 08:29:16,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167849455623960.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:DBCC.doc
本文 PDF 下載地址:DBCC.pdf
| 留言與評論(共有 0 條評論) |