資料庫的備份與恢復(一)

2021-04-25 08:30:57 字數 4620 閱讀 1503

其實裡面沒有什麼新的內容,主要就是這兩天翻了鄒老大的第一本書裡面的資料庫備份與恢復一章,把裡面的內容自己稍微總結一下,所以裡面的主要內容主要還是鄒老大的內容。如果鄒老大認為有侵權行為,告訴我,我刪掉這個blog。

一、資料庫備份的與還原的四種發放

1、完全備份:包含了指定資料庫中的所有資料,生成的備份檔案最大,需要處理的時

間也最長。

2、差異備份:指備份自上次完全備份,發生了更改的資料。在做差異備份前,必須至

少有一次完全備份。

3、事務日誌備份:之備份自上次備份後對資料庫執行的所有事務的一系列記錄。這個

上次的備份,可以是完全備份、差異備份或者日誌備份。日誌備份前,至少要有一次完全備份。

4、檔案和檔案組備份:可以僅備份資料庫中的某個特定資料檔案或檔案組,使用於把

經常變化和不經常變化的資料分配到不同的檔案組。

在一般進行備份時,會發現事務日誌備份與檔案和檔案組備份不可用。那是因為在sql

server 2000

中預設的恢復模型為簡單恢復模型,是不允許使用事務日誌備份、檔案和檔案組備份。只要吧恢復模型更改為完全或者大容量日誌記錄恢復模型後,這兩種備份方式就可以使用了。參見下圖。

注意:剛修改後,在備份模型這不能馬上顯示出來,需要等待一會方能顯示出來。(心急是吃不了熱豆腐的)

二、master資料庫的備份與還原

在sql server2000中,master資料庫記錄了整個系統級別的資訊,還記錄了所有的登入賬戶和系統配置設定。所以當建立或者刪除使用者資料庫、新增登陸或者執行其他與登入安全有關的操作,建立或者刪除備份裝置等應該對master資料庫進行備份。

1、備份:對於master資料庫的備份與普通資料庫相同。backup database master to disk=』d:/master.bak』 2

、恢復:master資料庫的還原相對來說比較麻煩。

1)、master資料庫損壞,那麼需要重建master資料庫,在microsoft sql server/80、tools/binn下執行rebuildm.exe,然後指定伺服器名與資料檔案目錄

2)、master資料庫沒有損壞,那麼恢復的時候,先要切換到單使用者模式下啟動server服務。首先,先停止mssqlserver服務;第二,在命令模式下,執行sqlservr.exe –c –m [-instancename],如果資料庫使用的預設的例項名,那麼就不用寫例項名了。如果有例項名,那麼例項名一定要寫上,否則單使用者啟動模式啟動不成功。第三,在查詢分析器中執行恢復資料庫的語句,restore databse master from disk =』d:/master.bak』。在登陸查詢分析器的時候,會提示登陸失敗,在這裡不用管這個錯誤即可,單擊『否』即可。

三、使用者資料庫的備份與恢復

1、使用企業管理器:伺服器組—>伺服器—>資料庫—>所有任務—>所有任務—>備份或者恢復資料庫。在備份的時候需要先新增備份裝置或者備份檔案

2、完全備份:backup database pubs to disk=』c:/完全備份.bak』

恢復:restore database pubs from disk=』c:/完全備份.bak』 3

、差異備份:backup database pubs to disk=』c:/差異備份.bak』 with differential

恢復:1)進行完全恢復:

restore database pubs from disk=』c:/

完全備份.bak』 with norecovery 2

)進行差異恢復:

restore database pubs from disk=』c:/

差異備份.bak』 with recovery

在進行第一步恢復的時候一定要指定with norecovery,否則會提示「

伺服器: 訊息4306,級別16,狀態1,行1

先前的還原操作未指定with norecovery 或with standby。請在除最後步驟之外的所有其它步驟中指定with norecovery 或with standby 後,重新啟動該還原序列。

伺服器: 訊息3013,級別16,狀態1,行1

restore database

操作異常終止。「錯誤。

4、日誌備份:backup log pubs to disk=』c:/日誌備份.bak』

還原:1)先進行完全恢復:

restore database pubs from disk=』c:/

完全備份.bak』 with norecovery 2

)進行差異恢復:

restore database pubs from disk=』c:/

差異備份.bak』 with norecovery 3

)進行日誌恢復,按照時間順序(日誌備份的順序)來進行恢復:

restor log pubs from disk=』c:/

日誌備份.bak』 with recovery 5

、資料檔案或檔案組備份與還原

--

建立測試資料庫,使用的是鄒老大的**

create database db

on primary(

name='db_data',

filename= 'c:/db_data.mdf'),

filegroup db_fg1(

name = 'db_fg1_data',

filename = 'c:/db_fg1_data.ndf'),

filegroup db_fg2(

name = 'db_fg2_data',

filename = 'c:/db_fg2_data.ndf')

log on(

name='db_log',

filename ='c:/db.ldf')

go

--

在檔案組db_fg1上建立表,並單獨建立該檔案組的備份

create table db.dbo.tb(id int) on db_fg1

backup database db filegroup='db_fg1' to disk='c:/db_fg1.bak' with format

go

在其他檔案組上建立表

create table db.dbo.ta(id int) on [primary]

create table db.dbo.tc(id int) on db_fg2

insert db.dbo.tb select id from sysobjects

--

備份每個檔案組,並且備份事務日誌

backup database db filegroup='primary' to disk='c:/db_primary.bak' with format

backup database db filegroup='db_fg1' to disk='c:/db_fg1_new.bak' with format

backup database db filegroup='db_fg2' to disk='c:/db_fg2.bak' with format

backup log db to disk='c:/db_log.bak' with format

go

--

刪除資料庫

drop database db

go

--

從檔案組備份中恢復資料

restore database db filegroup='primary' from disk='c:/db_primary.bak' with norecovery,replace

restore database db filegroup='db_fg1' from disk='c:/db_fg1.bak' with norecovery

restore database db filegroup='db_fg2' from disk='c:/db_fg2.bak' with norecovery

restore log db from disk='c:/db_log.bak' with recovery

select count(*) from db.dbo.tb

go

--

刪除測試資料庫

drop database db

資料庫備份與恢復

主要 段 資料庫的備份和實時進度顯示 public bool backupdb string servername,string username,string password,string strdbname,string strfilename,progressbar pgbmain catc...

資料庫備份與恢復

unit ustore inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,ibservices type tfrestore class tform ibb...

資料庫備份與恢復

對於絕大多數企業來講,失去資料就相當於失去商機 失去產品 失去客戶,甚至會造成公司倒閉,那麼,在所有的資料中,最核心的資料又是哪些呢?這恐怕要屬資料庫中的資料了,當然,並不是說其他資料不重要,只是這一部分更具代表性。既然資料庫中的資料地位這麼高,那麼資料庫備份與恢復的重要性就不言而喻了。1 mysq...