from :
如果乙個資料庫比較大的時候,一般會包含多個檔案組,由於備份還原是個很耗資源和時間的事情,所以檔案組的備份和還原成了另外一種選擇。
在建立帶有多個檔案組的時候,建議將使用者資料放在輔助檔案組中,就是將其中乙個檔案組設定為預設,而不是用primary作為預設的檔案組:
create database test
on primary
(name=test_mdf,
filename='d:\sql_data\test.mdf'
size=4mb,
maxsize=unlimited,
filegrowth=10%),
filegroup fg1 default
(name=test_ndf,
filename='d:\sec_data\test.ndf',
size=4mb,
maxsize=unlimited,
filegrowth=10%)
log on
(name=test_log,
filename='d:\log\test.ldf',
size=4mb,
maxsize=unlimited,
filegrowth=10%)
上面的例子,主檔案組primary將只包含系統表和物件,不包含使用者資料庫檔案,這樣更有利於檔案組的備份和還原。
另外,還可以將建立的表指定放在哪個檔案組裡(有時檔案組很多)
create table (...) on 《檔案組名》
這在資料庫設計的時候或許會用到。
1、備份資料庫檔案組
(1)建立檔案組完整備份
use master
gobackup database test
filegroup='fg1'
to myback1,myback2
with name='test_fullbackup_20090524'
(2)建立檔案組差異備份
use master
gobackup database test
filegroup='fg1'
to myback1,myback2
with differential,name='test_diffbackup_20090524'
(3)建立日誌備份
use master
gobackup log test
to myback1,myback2
with name='test_logbackup_20090524'
2、還原資料庫檔案組
需要非常注意的乙個地方是:在還原檔案或者檔案組備份前必須進行尾日誌備份,因為需要將該檔案或檔案組恢復到同資料庫中其他檔案或檔案組一致的狀態。如果不能獲得尾日誌備份的話,那麼就不能單獨還原單個檔案或者檔案組,而必須還原整個資料庫。
(1)備份尾日誌
這跟備份日誌是一樣的。
use master
gobackup log test
to myback1,myback2
with name='test_taillogbackup_20090524'
(2)還原檔案組
先檢視一下備份資訊
go注意:差異備份之前的事務日誌備份就不用還原了。
如果是備份或者還原檔案,將filegroup改成file就行了。
3、常用的檔案或檔案組備份和還原策略
假設只有兩個檔案組primary和fg1
(1)星期六晚上對primary進行完整檔案組備份(作為基備份)
(2)星期日晚上對fg1進行完整檔案組備份(作為基備份)
(3)星期二晚上對primary進行差異檔案組備份
(4)星期三晚上對fg1進行差異檔案組備份
(5)星期四晚上對primary進行差異檔案組備份
(6)星期五晚上對fg1進行差異檔案組備份
(7)每隔30分鐘進行一次事務日誌備份
當故障發生時還原的時候
(1)還原兩個檔案組的基備份
(2)還原primary的最近差異備份
(3)還原primary的最近差異備份後的日誌備份
(4)還原fg1的最近差異備份
(5)還原fg1的最近差異備份後的日誌備份
轉 SQL檔案組備份和還原(二)
from 上次關於sql檔案組的備份和還原似乎意猶未盡,我總覺得好像欠些什麼。做了尾日誌備份,是為了能將資料庫還原到故障發生時的那個點。但如果沒有發生故障,而是因為誤操作,想還原到前面的乙個點呢,當然,同樣要先做尾日誌備份,否則還原會出錯,但是還原的時候不要還原尾日誌了。我建了乙個測試資料庫test...
檔案及檔案組備份與還原示例 sql
以下 簡單地演示了如何進行檔案組的備份及還原 在還原時,模擬了丟失第二次檔案組備份檔案的情況 建立測試資料庫 create database db on primary name db data filename c db data.mdf filegroup db fg1 name db fg1 ...
轉 SQL的完整備份和還原
from 對於資料庫來說,備份和還原無疑是非常重要的。今天就在自己的機器上學習並操作了一下,總結一下。我用的是2005,今天先總結的是完整資料庫備份和還原。1 首先先建立備份裝置 exec sp addumpdevice disk myback1 d backup myback1.bak goexe...