西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → 恢復(fù)丟失的SQLServer日志文件 避免導(dǎo)致數(shù)據(jù)庫(kù)徹底毀壞

恢復(fù)丟失的SQLServer日志文件 避免導(dǎo)致數(shù)據(jù)庫(kù)徹底毀壞

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2010/7/11 11:54:20字體大。A-A+

作者:佚名點(diǎn)擊:214次評(píng)論:0次標(biāo)簽: 日志

.NET日志記錄組件(NLog)Vv2.0.0.2000 官方安裝版
  • 類(lèi)型:系統(tǒng)其它大。6.3M語(yǔ)言:英文 評(píng)分:5.0
  • 標(biāo)簽:
立即下載

主要是介紹SQLServer日志文件丟失的正確恢復(fù)方法。在實(shí)際操作中SQLServer日志文件丟失是一件令人十分頭疼的事情,以下的文章主要是針對(duì)這一問(wèn)題給出的答案,以下就是正文的主要內(nèi)容描述。

一、 概述

在應(yīng)用系統(tǒng)中,數(shù)據(jù)庫(kù)往往是最核心的部分,一旦數(shù)據(jù)庫(kù)毀壞或損壞,將會(huì)帶來(lái)巨大的損失,所以數(shù)據(jù)庫(kù)的管理越來(lái)越重要。我們?cè)谧?a href="http://elephantinaurance.com/k/shujukugl/" target="_blank">數(shù)據(jù)庫(kù)管理與維護(hù)工作中,不可避免會(huì)出現(xiàn)各種各樣的錯(cuò)誤,本文針對(duì)數(shù)據(jù)庫(kù)的SQLServer日志文件丟失時(shí)如何利用MDF文件恢復(fù)數(shù)據(jù)庫(kù)的方法進(jìn)行了研究。

二、 數(shù)據(jù)庫(kù)的恢復(fù)

當(dāng)數(shù)據(jù)庫(kù)的主數(shù)據(jù)MDF文件完好無(wú)損時(shí),在丟失了LDF文件的情況下,如何利用MDF文件恢復(fù)數(shù)據(jù)庫(kù)?我們把SQL Server的日志文件分為兩類(lèi):一類(lèi)是無(wú)活動(dòng)事務(wù)的日志,另一類(lèi)是含活動(dòng)事務(wù)的日志,根據(jù)不同的日志,采取不同的方法來(lái)恢復(fù)數(shù)據(jù)庫(kù)。

1. 無(wú)活動(dòng)事務(wù)的日志恢復(fù)

無(wú)活動(dòng)事務(wù)的日志丟失時(shí),我們很容易利用MDF文件直接恢復(fù)數(shù)據(jù)庫(kù),具體方法如下:

①.分離被質(zhì)疑的數(shù)據(jù)庫(kù),可用企業(yè)管理器中的”分離數(shù)據(jù)庫(kù)工具”,或者用存儲(chǔ)過(guò)程sp_detach_db分離數(shù)據(jù)庫(kù);

②利用MDF文件附加數(shù)據(jù)庫(kù)生成新的日志文件,可用企業(yè)管理器中的”附加數(shù)據(jù)庫(kù)”的工具,或者用存儲(chǔ)過(guò)程sp_attach_single_file_db附加數(shù)據(jù)庫(kù)。

如果數(shù)據(jù)庫(kù)的日志文件中含有活動(dòng)事務(wù),利用此方法就不能SQLServer日志文件丟失的恢復(fù)數(shù)據(jù)庫(kù)。

2. 含活動(dòng)事務(wù)的日志恢復(fù)

含有活動(dòng)事務(wù)的日志丟失時(shí),利用上述方法就會(huì)出現(xiàn)”數(shù)據(jù)庫(kù)和日志文件不符合,不能附加數(shù)據(jù)庫(kù)”。對(duì)于這種情況下,我們采用如下方法:

①新建同名數(shù)據(jù)庫(kù)AAA,并設(shè)它為緊急模式

停止SQL Server服務(wù)器;

把數(shù)據(jù)庫(kù)主數(shù)據(jù)MDF文件移走;

啟SQL Server服務(wù)器,新建一個(gè)同名的數(shù)據(jù)庫(kù)AAA;

停止SQL Server服務(wù)器,把移走的MDF文件再覆蓋回來(lái);

啟動(dòng)SQL Server服務(wù)器,把AAA設(shè)為緊急模式,不過(guò)默認(rèn)情況下,系統(tǒng)表是不能隨便修改的,必須首先設(shè)置一下使其能被修改,運(yùn)行以下語(yǔ)句即可:

 

代碼片段:
Use Master

Go

sp_configure ’allow updates’,1

reconfigure with override

Go

接著運(yùn)行以下語(yǔ)句,把AAA數(shù)據(jù)庫(kù)設(shè)為緊急模式,即把Sysdatabases表中AAA數(shù)據(jù)庫(kù)的status屬性設(shè)為’37268’,就表示把AAA數(shù)據(jù)庫(kù)處于緊急模式。

update sysdatabases set status=32768 where hame=’AAA’

如果沒(méi)有報(bào)告什么錯(cuò)誤,就可以進(jìn)行以下操作。

數(shù)據(jù)庫(kù)

 

②設(shè)置數(shù)據(jù)庫(kù)AAA為單用戶(hù)模式,并檢查數(shù)據(jù)庫(kù)

重啟SQL Server服務(wù)器;

把數(shù)據(jù)庫(kù)AAA設(shè)為單用戶(hù)模式

Sp_dboption ’AAA’, ’single user’, ’true’

運(yùn)行以下語(yǔ)句,檢查數(shù)據(jù)庫(kù)AAA

DBCC CHECKDB(’AAA’)

如果沒(méi)有什么大的問(wèn)題就可以把數(shù)據(jù)庫(kù)的狀態(tài)改回去。

③還原數(shù)據(jù)庫(kù)的狀態(tài)

運(yùn)行以下語(yǔ)句,就可以把數(shù)據(jù)庫(kù)的狀態(tài)還原:

 

代碼片段:

update sysdatabases set status=28 where name=’AAA’

sp_configure ’allow updates’,0

reconfigure with override

Go
 


如果沒(méi)有什么大的問(wèn)題,刷新一下數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)AAA又會(huì)出現(xiàn)在你面前,但目前恢復(fù)工作還沒(méi)有做完,此時(shí)的數(shù)據(jù)庫(kù)仍不能工作,還要進(jìn)行下面的處理,才能真正恢復(fù)。

④利用DTS的導(dǎo)入導(dǎo)出向?qū),把?shù)據(jù)庫(kù)AAA導(dǎo)入到一個(gè)新建數(shù)據(jù)庫(kù)BBB中

新建一個(gè)數(shù)據(jù)庫(kù)BBB;

右擊BBB,選擇IMPORT功能,打開(kāi)導(dǎo)入向?qū)?

目標(biāo)源選擇”在SQL Server數(shù)據(jù)庫(kù)之間復(fù)制對(duì)象和數(shù)據(jù)庫(kù)”,這樣可以把表結(jié)構(gòu),數(shù)據(jù)視圖和存儲(chǔ)過(guò)程導(dǎo)入到BBB中

再用此功能把BBB庫(kù)替換成原來(lái)的AAA庫(kù)即可。

到此為止,數(shù)據(jù)庫(kù)AAA就完全恢復(fù)。

SQLServer日志文件丟失是一件非常危險(xiǎn)的事情,很有可能你的數(shù)據(jù)庫(kù)徹底毀壞。SQL Server數(shù)據(jù)庫(kù)的恢復(fù)都是靠日志文件來(lái)完成,所以無(wú)論如何都要保證日志文件的存在,它至關(guān)重要。為了使我們的數(shù)據(jù)庫(kù)萬(wàn)無(wú)一失,最好采用多種備份方式相結(jié)合,所以我們要從心里重視數(shù)據(jù)庫(kù)的管理與維護(hù)工作。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)