解讀SQL Server數(shù)據(jù)庫備份的方法_Mssql數(shù)據(jù)庫教程
推薦:解析SQL 2008的Change Data Capture功能在常見的企業(yè)數(shù)據(jù)平臺管理中有一項任務(wù)是一直困擾SQL Server DBA們的,這就是對數(shù)據(jù)更新的監(jiān)控。很多數(shù)據(jù)應(yīng)用都需要捕獲對業(yè)務(wù)數(shù)據(jù)表的更新。筆者見過幾種解決方案: 1、在數(shù)
SQL Server數(shù)據(jù)庫備份有兩種方式,一種是使用BACKUP DATABASE將數(shù)據(jù)庫文件備份出去,另外一種就是直接拷貝數(shù)據(jù)庫文件mdf和日志文件ldf的方式。
下面將主要討論一下后者的備份與恢復(fù)。
1、正常的備份、SQL數(shù)據(jù)庫恢復(fù)方式
正常方式下,我們要備份一個數(shù)據(jù)庫,首先要先將該數(shù)據(jù)庫從運行的數(shù)據(jù)服務(wù)器中斷開,或者停掉整個數(shù)據(jù)庫服務(wù)器,然后復(fù)制文件。
卸下數(shù)據(jù)庫的命令:Sp_detach_db 數(shù)據(jù)庫名。
連接數(shù)據(jù)庫的命令:
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′
使用此方法可以正確恢復(fù)SQL Sever7.0和SQL Server 2000的數(shù)據(jù)庫文件,要點是備份的時候一定要將mdf和ldf兩個文件都備份下來,mdf文件是數(shù)據(jù)庫數(shù)據(jù)文件,ldf是數(shù)據(jù)庫日志文件。
例子:
假設(shè)數(shù)據(jù)庫為test,其數(shù)據(jù)文件為test_data.mdf,日志文件為test_log.ldf。下面我們討論一下如何備份、恢復(fù)該數(shù)據(jù)庫。
卸下數(shù)據(jù)庫:sp_detach_db 'test'
連接數(shù)據(jù)庫:
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\MicrosoftSQL Server\MSSQL\Data\test_data.mdf'
2、只有mdf文件的恢復(fù)技術(shù)
由于種種原因,我們?nèi)绻?dāng)時僅僅備份了mdf文件,那么恢復(fù)起來就是一件很麻煩的事情了。
如果您的mdf文件是當(dāng)前數(shù)據(jù)庫產(chǎn)生的,那么很僥幸,也許你使用sp_attach_db或者sp_attach_single_file_db可以恢復(fù)數(shù)據(jù)庫,但是會出現(xiàn)類似下面的提示信息。
設(shè)備激活錯誤。
物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有誤。
已創(chuàng)建名為 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。
但是,如果您的數(shù)據(jù)庫文件是從其他計算機上復(fù)制過來的,那么很不幸,也許上述辦法就行不通了。你也許會得到類似下面的錯誤信息:
服務(wù)器:消息 1813,級別 16,狀態(tài) 2,行 1
未能打開新數(shù)據(jù)庫 'test'。CREATE DATABASE 將終止。
設(shè)備激活錯誤。物理文件名 'd:\test_log.LDF' 可能有誤。
怎么辦呢?別著急,下面我們舉例說明恢復(fù)辦法。
A.我們使用默認(rèn)方式建立一個供恢復(fù)使用的數(shù)據(jù)庫(如test)�?梢栽赟QL Server Enterprise Manager里面建立。
B.停掉數(shù)據(jù)庫服務(wù)器。
C.將剛才生成的數(shù)據(jù)庫的日志文件test_log.ldf刪除,用要恢復(fù)的數(shù)據(jù)庫mdf文件覆蓋剛才生成的數(shù)據(jù)庫數(shù)據(jù)文件test_data.mdf。
D.啟動數(shù)據(jù)庫服務(wù)器。此時會看到數(shù)據(jù)庫test的狀態(tài)為“置疑”。這時候不能對此數(shù)據(jù)庫進(jìn)行任何操作。
E.設(shè)置數(shù)據(jù)庫允許直接操作系統(tǒng)表。此操作可以在SQL Server Enterprise Manager里面選擇數(shù)據(jù)庫服務(wù)器,按右鍵,選擇“屬性”,在“服務(wù)器設(shè)置”頁面中將“允許對系統(tǒng)目錄直接修改”一項選中。也可以使用如下語句來實現(xiàn)。
use master go sp_configure 'allow updates',1 go reconfigure with override go
F.設(shè)置test為緊急修復(fù)模式:
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此時可以在SQL Server Enterprise Manager里面看到該數(shù)據(jù)庫處于“只讀\置疑\脫機\緊急模式”可以看到數(shù)據(jù)庫里面的表,但是僅僅有系統(tǒng)表。
G.下面執(zhí)行真正的恢復(fù)操作,重建數(shù)據(jù)庫日志文件:
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
執(zhí)行過程中,如果遇到下列提示信息:
服務(wù)器:消息 5030,級別 16,狀態(tài) 1,行 1 未能排它地鎖定數(shù)據(jù)庫以執(zhí)行該操作。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
說明您的其他程序正在使用該數(shù)據(jù)庫,如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了test庫的系統(tǒng)表,那么退出SQL Server Enterprise Manager就可以了。
正確執(zhí)行完成的提示應(yīng)該類似于:(此文章由飛客數(shù)據(jù)恢復(fù)中心搜集http://www.cellma.com.cn)
警告:數(shù)據(jù)庫 'test' 的日志已重建。已失去事務(wù)的一致性。應(yīng)運行 DBCC CHECKDB 以驗證物理一致性。將必須重置數(shù)據(jù)庫選項,并且可能需要刪除多余的日志文件。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
此時打開在SQL Server Enterprise Manager里面會看到數(shù)據(jù)庫的狀態(tài)為“只供DBO使用”。此時可以訪問數(shù)據(jù)庫里面的用戶表了。
H.驗證數(shù)據(jù)庫一致性:dbcc checkdb('test')
一般執(zhí)行結(jié)果如下:
CHECKDB 發(fā)現(xiàn)了 0 個分配錯誤和 0 個一致性錯誤(在數(shù)據(jù)庫 'test' 中)。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
I.設(shè)置數(shù)據(jù)庫為正常狀態(tài):
sp_dboption 'test','dbo use only','false'
如果沒有出錯,那么恭喜,現(xiàn)在就可以正常的使用恢復(fù)后的數(shù)據(jù)庫啦。
J.最后一步,我們要將步驟E中設(shè)置的“允許對系統(tǒng)目錄直接修改”一項恢復(fù)。因為平時直接操作系統(tǒng)表是一件比較危險的事情。當(dāng)然,我們可以在SQL Server Enterprise Manager里面恢復(fù),也可以使用如下語句完成:
sp_configure 'allow updates',0 go reconfigure with override go
分享:解讀SQL Server小知識:Processor AffinitySQL Server通常都運行在多處理器的服務(wù)器上,這一點在現(xiàn)在尤為普遍。原因是多內(nèi)核的處理器越來越普及。 那么,在多處理器環(huán)境下,Windows操作系統(tǒng)(事實上是從2000開始的)通常都會將
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 關(guān)于SQL 存儲過程入門基礎(chǔ)(基礎(chǔ)知識)
- 解決SQL Server數(shù)據(jù)庫占用過多內(nèi)存的方法
- 大內(nèi)存SQL Server數(shù)據(jù)庫的加速劑
- 探討SQL Server 2005的評價函數(shù)
- 從Access數(shù)據(jù)庫到SQL Server高手
- 基于SQL Server中char,nchar,varchar,nvarchar的使用區(qū)別
- SQL Server 2008 安裝和配置圖解教程(附官方下載地址)
- 解讀SQL Server游標(biāo)使用實例
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
- 解讀SQL Server與Access語法小差異
猜你也喜歡看這些
- SQL查詢超時的設(shè)置方法(關(guān)于timeout的處理)
- mysql 超大數(shù)據(jù)/表管理技巧
- 如何通過配置自動實現(xiàn)ValueList中hql語句的整型參數(shù)轉(zhuǎn)換
- 綠色版mysql注冊卸載服務(wù)方法
- DBA應(yīng)該知道的一些關(guān)于SQL Server跟蹤標(biāo)記的使用
- MySQL筆記之系統(tǒng)信息函數(shù)詳解
- 從mysql中導(dǎo)出單個表結(jié)構(gòu)和數(shù)據(jù)
- MySQL筆記之索引的使用
- mysql服務(wù)器字符集查詢和設(shè)置方法
- SQL分組排序去重復(fù)的小實例
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-解讀SQL Server數(shù)據(jù)庫備份的方法
。