程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 教你輕松恢復/修復SQL Server的MDF文件

教你輕松恢復/修復SQL Server的MDF文件

編輯:MSSQL

教你輕松恢復/修復SQL Server的MDF文件。本站提示廣大學習愛好者:(教你輕松恢復/修復SQL Server的MDF文件)文章只能為提供參考,不一定能成為您想要的結果。以下是教你輕松恢復/修復SQL Server的MDF文件正文


起首:假如備份的數據庫有兩個文件,分離是.LDF 和 .MDF,翻開企業治理器,在實例上右擊---一切義務--附加數據庫,然後選擇誰人.MDF文件,便可以了。

或許在查詢剖析器中輸出:

sp_attach_db "數據庫稱號","途徑\文件名.ldf","途徑\文件名.MDF"

SQL Server數據庫備份有兩種方法,一種是應用BACKUP DATABASE將數據庫文件備份出去,別的一種就是直接拷貝數據庫文件mdf和日記文件ldf的方法。上面將重要評論辯論一下後者的備份與恢復。本文假定您 能闇練應用SQL Server Enterprise Manager(SQL Server企業治理器)和SQL Server Quwey Analyser(SQL Server查詢剖析器)。

1.正常的備份、恢復方法0

正常方法下,我們要備份一個數據庫,起首要先將該數據庫從運轉的數據辦事器中止開,或許停失落全部數據庫辦事器,然後復制文件。

卸下數據庫的敕令:Sp_detach_db 數據庫名


銜接數據庫的敕令:Sp_attach_db或許sp_attach_single_file_db
s_attach_db [@dbname =] 'dbname',
[@filename1 =] 'filename_n' [,...16]
sp_attach_single_file_db [@dbname =]
'dbname', [@physname =] 'physical_name'

應用此辦法可以准確恢復SQL Sever7.0和SQL Server 2000的數據庫文件,要點是備份的時刻必定要將mdf和ldf兩個文件都備份上去,mdf文件是數據庫數據文件,ldf是數據庫日記文件。

例子:

假定數據庫為test,其數據文件為test_data.mdf,日記文件為test_log.ldf。上面我們評論辯論一下若何備份、恢復該數據庫。


卸下數據庫:sp_detach_db 'test'
銜接數據庫:sp_attach_db 'test','
C:\Program Files\Microsoft SQL Server\MSSQL
\Data\test_data.mdf','C:\Program Files
\Microsoft SQL Server\MSSQL\Data\test_log.ldf'
sp_attach_single_file_db 'test','
C:\Program Files\Microsoft SQL Server\MSSQL
\Data\test_data.mdf'

2.只要mdf文件的恢復技巧

因為各種緣由,我們假如其時僅僅備份了mdf文件,那末恢復起來就是一件很費事的工作了。

假如您的mdf文件是以後數據庫發生的,那末很幸運,或許你應用sp_attach_db或許sp_attach_single_file_db可以恢單數據庫,然則會湧現相似上面的提醒信息:

裝備激活毛病。


物理文件名 'C:\Program Files\Microsoft SQL Server
\MSSQL\data\test_Log.LDF' 能夠有誤。
已創立名為 'C:\Program Files\Microsoft SQL Server
\MSSQL\Data\test_log.LDF' 的新日記文件。

然則,假如您的數據庫文件是從其他盤算機上復制過去的,那末很不幸,或許上述方法就行欠亨了。你或許會獲得相似上面的毛病信息:


辦事器: 新聞 1813,級別 16,狀況 2,行 1
辦事器: 新聞 1813,級別 16,狀況 2,行 1未能翻開新數據庫 'test'。CREATE DATABASE 將終止。
裝備激活毛病。物理文件名 'd:\test_log.LDF' 能夠有誤。

怎樣辦呢?別焦急,上面我們舉例解釋恢復方法。

A.我們應用默許方法樹立一個供恢復應用的數據庫(如test)。可以在SQL Server Enterprise Manager外面樹立。

B.停失落數據庫辦事器。

C.將適才生成的數據庫的日記文件test_log.ldf刪除,用要恢復的數據庫mdf文件籠罩適才生成的數據庫數據文件test_data.mdf。

D.啟動數據庫辦事器。此時會看到數據庫test的狀況為“置疑”。這時候候不克不及對此數據庫停止任何操作。

E.設置數據庫許可直接操作體系表。此操作可以在SQL Server Enterprise Manager外面選擇數據庫辦事器,按右鍵,選擇“屬性”,在“辦事器設置”頁面中將“許可對體系目次直接修正”一項選中。也能夠應用以下語句來完成。

F.設置test為緊迫修復形式


update sysdatabases set status=-32768
where dbid=DB_ID('test')

此時可以在SQL Server Enterprise Manager外面看到該數據庫處於“只讀\置疑\脫機\緊迫形式”可以看到數據庫外面的表,然則僅唯一體系表

G.上面履行真實的恢復操作,重建數據庫日記文件:


dbcc rebuild_log('test','C:\Program Files\Microsoft
            SQL Server\MSSQL\Data\test_log.ldf')

履行進程中,假如碰到以下提醒信息:

辦事器: 新聞 5030,級別 16,狀況 1,行 1

未能排它地鎖定命據庫以履行該操作。

DBCC 履行終了。假如 DBCC 輸入了毛病信息,請與體系治理員接洽。

解釋您的其他法式正在應用該數據庫,假如適才您在F步調中應用SQL Server Enterprise Manager翻開了test庫的體系表,那末加入SQL Server Enterprise Manager便可以了。

准確履行完成的提醒應當相似於:

正告: 數據庫 'test' 的日記已重建。已掉去事務的分歧性。應運轉 DBCC CHECKDB 以驗證物理分歧性。將必需重置數據庫選項,而且能夠須要刪除過剩的日記文件。

DBCC 履行終了。假如 DBCC 輸入了毛病信息,請與體系治理員接洽。

此時翻開在SQL Server Enterprise Manager外面會看到數據庫的狀況為“只供DBO應用”。此時可以拜訪數據庫外面的用戶表了。

H.驗證數據庫分歧性(可省略)

dbcc checkdb('test')

普通履行成果以下:

CHECKDB 發明了 0 個分派毛病和 0 個分歧性毛病(在數據庫 'test' 中)。

DBCC 履行終了。假如 DBCC 輸入了毛病信息,請與體系治理員接洽。

I.設置數據庫為正常狀況

sp_dboption 'test','dbo use only','false'

假如沒有失足,那末祝賀,如今便可以正常的應用恢復後的數據庫啦。

J.最初一步,我們要將步調E中設置的“許可對體系目次直接修正”一項恢復。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved