The information in this article applies to:
|
- Microsoft SQL Server 7.0,2000
|
?
[SQL] 數(shù) 據(jù) 庫 置疑 的
故事
Revision History:
對本文檔所有修改都應(yīng)按修改時間順序記錄在此。
Version
|
Date
|
Creator
|
Description
|
|
|
鄭昀
|
草稿
|
|
|
|
|
Implementation Scope :
本文面向的讀者是
Microsoft SQL Server
維護(hù)人員
。
繼續(xù)閱讀之前,我們假設(shè)您熟悉以下知識:
n
???????
Microsoft SQL Server
1.
以前的文章
從前寫過一篇
數(shù)據(jù)庫日志文件丟失時的恢復(fù)步驟
????zhengyun_ustc
(原作)
(
http://www.csdn.net/develop/read_article.asp?id=17604
),
描述我誤刪除了數(shù)據(jù)庫的事務(wù)日志文件
(.ldf)
之后,如何經(jīng)過各種嘗試恢復(fù)數(shù)據(jù)庫的
。
但是不少網(wǎng)友在處理“數(shù)據(jù)庫置疑”的實踐過程中,又產(chǎn)生了許多新的疑問。
我還是總結(jié)一下出現(xiàn)的幾種情況,以供參考。
2.Zach
的靈驗?zāi)_本
Zach
說他每次遇到這種數(shù)據(jù)庫置疑情況,就運(yùn)行下面這個腳本,屢試不爽:
======================================================
--before running any script, run the following to set the
master database to allow updates
USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
--Run the following script
UPDATE master..sysdatabases SET status = status ^ 256
WHERE name = 'Database_Name'
--Run the following script
exec SP_resetstatus Database_Name
--stop and start the MSDTC at this stage
--After the procedure is created, immediately disable
updates to the system tables:
exec sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO
=====================================
|
從上面可以看出,處理置疑的基本步驟還是我那篇文章中說的
(
注意我使用的字體顏色
)
:
執(zhí)行
sp_configure
以允許對系統(tǒng)表進(jìn)行更新,然后用
RECONFIGURE WITH OVERRIDE
語句強(qiáng)制實施該配置;
數(shù)據(jù)庫重置緊急模式;
執(zhí)行
sp_resetstatus
關(guān)閉數(shù)據(jù)庫的置疑標(biāo)志,但是原封不動地保持?jǐn)?shù)據(jù)庫的其它選項
(
只有系統(tǒng)管理員才能執(zhí)行
)
。執(zhí)行該過程后,立即重啟
SQL Server
服務(wù);
執(zhí)行
sp_configure
以禁止對系統(tǒng)表進(jìn)行更新,然后用
RECONFIGURE WITH OVERRIDE
語句強(qiáng)制實施該配置。
? ? ? ?
status ^ 256
的意思就是:
Constant
|
Value
|
Description
|
SQLDMODBStat_Suspect
|
256
|
Database integrity is suspect for the referenced database.
|
不同的是,有時候丟失了數(shù)據(jù)庫日志文件,額外需要以下步驟:
?
????????
把應(yīng)用數(shù)據(jù)庫設(shè)置為
Single User
模式;
?
????????
做
DBCC CHECKDB
;
才可以。
但是幾位網(wǎng)友的實踐結(jié)果就是這個
DBCC CHECKDB
執(zhí)行失敗。一位網(wǎng)友
yang
說:“
但是
DBCC CHECKDB
就是執(zhí)行不了,總是說
“
該數(shù)據(jù)庫處于回避恢復(fù)模式
”
。我已經(jīng)試了很多次了,就是改變不了這個狀態(tài)。
”
還有一位
Rui
執(zhí)行
DBCC CHECKDB
時報錯:“
Server: Msg 943, Level 14, State 1, Line 1 Database 'his_yb' cannot be opened because its version (539) is later than the current server version (515).
”
對于
Yang
,可能他沒有一步一步做,。我的切身體會是,把應(yīng)用數(shù)據(jù)庫設(shè)置為
Single User
模式后就可以做
DBCC CHECKDB
。之后呢,也許
SQL Server
重啟后自動檢查數(shù)據(jù)庫是否正常。
但是數(shù)據(jù)應(yīng)該是可以讀出來的,至少可以被
DTS Wizard
讀出來的
。這時候的數(shù)據(jù)庫還存在問題,比如我的
組件使用數(shù)據(jù)庫時,報告說:“發(fā)生錯誤:
-2147467259,
未能在數(shù)據(jù)庫
'XXX'
中運(yùn)行
BEGIN TRANSACTION
,因為該數(shù)據(jù)庫處于回避恢復(fù)模式?!?
對于
Rui
,
他
碰到的那個錯誤
Server: Msg 943, Level 14, State 1, Line 2
Database 'XXXX' cannot be opened because its version (536) is later than
the current server version (515).
這表明
Rui
正試圖:
從一個
SQL Server 2000(version 539,536之類的)
的數(shù)據(jù)庫備份恢復(fù)到一個
SQL Server 7.0
中
或者
把一個
SQL Server 2000(version 539,536之類的)
的數(shù)據(jù)庫
attach
到一個
SQL Server 7.0
中
,
這是不允許的。如果你必須使用這個
SQL Server 2000
的數(shù)據(jù)備份,那么請您首先把這個備份倒入
SQL Server 2000
,最后用
DTS
把數(shù)據(jù)庫從
SQL Server 2000
上
transfer
到
SQL Server 7.0
上。
關(guān)于數(shù)據(jù)庫置疑和日志文件丟失損壞,我們還會繼續(xù)關(guān)注并作進(jìn)一步報道。
Writen by zhengyun.NoJunk(at)tomosoft.dot.com
Disclaimers
:
本文檔所包含的信息代表了在發(fā)布之日,
ZhengYun
對所討論問題的當(dāng)前看法,
Zhengyun
不保證所給信息在發(fā)布之日以后的準(zhǔn)確性。
本文檔僅供參考。對本文檔中的信息,
Zhengyun
不做任何明示或默示的保證。
用戶必須遵守所有適用的版權(quán)法。在不對版權(quán)法所規(guī)定的權(quán)利加以限制的情況下,如未得到
zhengyun
和
CSDN.Net
明確的書面許可,不得出于任何目的、以任何形式或手段(電子的、機(jī)械的、影印、錄制等等)復(fù)制、傳播本文的任何部分,也不得將其存儲或引入到檢索系統(tǒng)中。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12747
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
