亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

如何恢復沒有日志的MSSQL數據庫

添加時間:2012-12-3 17:32:51  添加: 思海網絡 

很多時候因為備份或其它原因,導致了數據庫的LOG日志文件丟失,在通過正常的SQL企業管理器無法附加數據庫文件時,我們該怎么辦呢?

下面介紹兩種方法給大家參考:

方法一

1.新建一個同名的數據庫

2.再停掉sqlserver(注意不要分離數據庫)

3.用原數據庫的數據文件覆蓋掉這個新建的數據庫

4.再重啟sqlserver

5.此時打開企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的數據庫名)

6.完成后一般就可以訪問數據庫中的數據了,這時,數據庫本身一般還要問題,解決辦法是,利用
數據庫的腳本創建一個新的數據庫,并將數據導進去就行了.

USEMASTER
GO

SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
GO

UPDATESYSDATABASESSETSTATUS=32768WHERENAME='置疑的數據庫名'
Go

sp_dboption'置疑的數據庫名','singleuser','true'
Go

DBCCCHECKDB('置疑的數據庫名')
Go

updatesysdatabasessetstatus=28wherename='置疑的數據庫名'
Go

sp_configure'allowupdates',0reconfigurewithoverride
Go

sp_dboption'置疑的數據庫名','singleuser','false'
Go

方法二

事情的起因

昨天,系統管理員告訴我,我們一個內部應用數據庫所在的磁盤空間不足了。我注意到數據庫事件日志文件XXX_Data.ldf文件已經增長到了3GB,于是我決意縮小這個日志文件。經過收縮數據庫等操作未果后,我犯了一個自進入行業以來的最大最愚蠢的錯誤:竟然誤刪除了這個日志文件!后來我看到所有論及數據庫恢復的文章上都說道:“無論如何都要保證數據庫日志文件存在,它至關重要”,甚至微軟甚至有一篇KB文章講如何只靠日志文件恢復數據庫的。我真是不知道我那時候是怎么想的?!

這下子壞了!這個數據庫連不上了,企業管理器在它的旁邊寫著“(置疑)”。而且最要命的,這個數據庫從來沒有備份了。我唯一找得到的是遷移半年前的另外一個數據庫服務器,應用倒是能用了,但是少了許多記錄、表和存儲過程。真希望這只是一場噩夢!

沒有效果的恢復步驟

附加數據庫

_Rambo講過被刪除日志文件中不存在活動日志時,可以這么做來恢復:

1,分離被置疑的數據庫,可以使用sp_detach_db
2,附加數據庫,可以使用sp_attach_single_file_db

但是,很遺憾,執行之后,SQLServer質疑數據文件和日志文件不符,所以無法附加數據庫數據文件。

DTS數據導出

不行,無法讀取XXX數據庫,DTSWizard報告說“初始化上下文發生錯誤”。

緊急模式

怡紅公子講過沒有日志用于恢復時,可以這么做:

1,把數據庫設置為emergencymode

2,重新建立一個log文件

3,把SQLServer重新啟動一下

4,把應用數據庫設置成單用戶模式

5,做DBCCCHECKDB

6,如果沒有什么大問題就可以把數據庫狀態改回去了,記得別忘了把系統表的修改選項關掉

我實踐了一下,把應用數據庫的數據文件移走,重新建立一個同名的數據庫XXX,然后停掉SQL服務,把原來的數據文件再覆蓋回來。之后,按照怡紅公子的步驟走。

但是,也很遺憾,除了第2步之外,其他步驟執行非常成功。可惜,重啟SQLServer之后,這個應用數據庫仍然是置疑!

不過,讓我欣慰的是,這么做之后,倒是能夠Select數據了,讓我大出一口氣。只不過,組件使用數據庫時,報告說:“發生錯誤:-2147467259,未能在數據庫'XXX'中運行BEGINTRANSACTION,因為該數據庫處于回避恢復模式。”

最終成功恢復的全部步驟
設置數據庫為緊急模式
停掉SQLServer服務;
把應用數據庫的數據文件XXX_Data.mdf移走;
重新建立一個同名的數據庫XXX;
停掉SQL服務;
把原來的數據文件再覆蓋回來;
運行以下語句,把該數據庫設置為緊急模式;
運行“UseMaster
Go
sp_configure'allowupdates',1
reconfigurewithoverride
Go”

執行結果:
DBCC執行完畢。如果DBCC輸出了錯誤信息,請與系統管理員聯系。
已將配置選項'allowupdates'從0改為1。請運行RECONFIGURE語句以安裝。

接著運行“updatesysdatabasessetstatus=32768wherename='XXX'”
執行結果:
(所影響的行數為1行)

重啟SQLServer服務;

運行以下語句,把應用數據庫設置為SingleUser模式;

運行“sp_dboption'XXX','singleuser','true'”

執行結果:

命令已成功完成。

做DBCCCHECKDB;

運行“DBCCCHECKDB('XXX')”

執行結果:

'XXX'的DBCC結果。

'sysobjects'的DBCC結果。

對象'sysobjects'有273行,這些行位于5頁中。

'sysindexes'的DBCC結果。

對象'sysindexes'有202行,這些行位于7頁中。

'syscolumns'的DBCC結果。

………

運行以下語句把系統表的修改選項關掉;

運行“sp_resetstatus"XXX"

go

sp_configure'allowupdates',0

reconfigurewithoverride

Go”

執行結果:

在sysdatabases中更新數據庫'XXX'的條目之前,模式=0,狀態=28(狀態suspect_bit=0),

沒有更新sysdatabases中的任何行,因為已正確地重置了模式和狀態。沒有錯誤,未進行任何更改。

DBCC執行完畢。如果DBCC輸出了錯誤信息,請與系統管理員聯系。

已將配置選項'allowupdates'從1改為0。請運行RECONFIGURE語句以安裝。

重新建立另外一個數據庫XXX.Lost;

DTS導出向導

運行DTS導出向導;

復制源選擇EmergencyMode的數據庫XXX,導入到XXX.Lost;

選擇“在SQLServer數據庫之間復制對象和數據”,試了多次,好像不行,只是復制過來了所有表結構,但是沒有數據,也沒有視圖和存儲過程,而且DTS向導最后報告復制失敗;

所以最后選擇“從源數據庫復制表和視圖”,但是后來發現,這樣總是只能復制一部分表記錄;

于是選擇“用一條查詢指定要傳輸的數據”,缺哪個表記錄,就導哪個;

視圖和存儲過程是執行SQL語句添加的。

這樣,XXX.Lost數據庫就可以替換原來的應用數據庫了

關鍵字:MSSQL數據庫、日志

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站