SQLServer 的備份與恢復 & 文件組的差別備份

/* 數據庫

    SQLServer 的備份與恢復ide

 

先寫入日記文件,再寫入數據庫測試

 

恢復模式spa

完整:      數據老是存儲爲2份,一份在日誌文件裏,一份在數據文件日誌

大容量日記: 普通SQL更新數據會完整記錄日記,BCP/BULKINSERT/INTO/建立或重建索引等不會寫入實際數據更新內容,orm

           而只是在一個數據頁位圖圖標標誌區域做一個數據變動標識,以減小IO負荷,日記備份時,根據數據頁位圖去更新數據         索引

簡單模式:   對數據更改仍是按照大容量模式記錄日記,數據更新操做完成,日記文件便可重用,提供全備份+差別備份事務

   

各類備份區別it

完整備份:   備份整個數據庫,恢復模式必須爲完整io

事務備份:   備份事務交易記錄,恢復模式必須爲完整

差別備份:   恢復時不須要依備份順序逐個恢復(如需恢復到星期三,先還原星期天的完整備份,再直接恢復星期三的差別備份)

增量備份:   恢復時必須依備份順序逐個恢復(如需恢復到星期三,先還原星期天的完整備份,而後還原星期一/二的備份,最後才恢復星期三的增量備份) 

 

*/

--備份

Backup Database initSfis To

    Disk='F:\Database\initSfis_1.Bak',

    Disk='F:\Database\initSfis_2.Bak',

    Disk='F:\Database\initSfis_3.Bak'

With Compression     --壓縮Differential 爲差別備份

 

--多存儲一份備份鏡像,必須加參數FORMAT

Backup Database initSfis To

    Disk='F:\Database\initSfis_1.Bak',

    Disk='F:\Database\initSfis_2.Bak',

    Disk='F:\Database\initSfis_3.Bak'

  MIRROR TO

    Disk='F:\Database\initSfis_1_1.Bak',

    Disk='F:\Database\initSfis_2_2.Bak',

    Disk='F:\Database\initSfis_3_3.Bak'      

With Compression, format    --壓縮

 

--日記備份, 一樣能夠使用MIRROR 選項

Backup Log DB To

    Disk='D:\Data\DB_20140519_Log_3_1.Bak',

    Disk='D:\Data\DB_20140519_Log_3_2.Bak'

With Compression

 

--查看文件備份頭

Restore HeaderOnly From Disk='F:\Database\initSfis20131031.bak'

GO

--查看文件備份是否有效

Restore VERIFYONLY From Disk='F:\Database\initSfis20131031.bak'

GO

--查看文件中的數據文件信息

Restore FileListOnly From Disk='F:\Database\initSfis20131031.bak'

GO

--還原

RESTORE DATABASE [initSfis] FROM 

    DISK =N'F:\Database\initSfis_2.Bak', 

    DISK =N'F:\Database\initSfis_3.Bak', 

    DISK =N'F:\Database\initSfis_1.Bak'

WITH  FILE = 1,  NOUNLOAD,  STATS = 10, replace    -- FILE=1 爲若有屢次備分內容,指示使用第一次備份

GO

--還原數據庫/事務日記指定時間點

RESTORE DATABASE [Credit] FROM  DISK = N'F:\Credit.bak' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 10  --能夠還原事務日記WITH NORECOVERY

GO

RESTORE DATABASE [Credit] FROM  DISK = N'F:\Credit_backup_2012_07_06_011501_0146598.trn'WITH NORECOVERY

GO

RESTORE DATABASE [Credit] FROM  DISK = N'F:\Credit_backup_2012_07_06_021503_5289873.trn'WITH RECOVERY,STOPAT='2012-07-06 02:00:00'  --鎖定到哪一點

GO

 

--還原沒有數據庫的前提,須要還原的時候移動文件

RESTORE DATABASE [Credit] FROM  DISK = N'F:\Credit.bak' WITH  FILE = 1, 

MOVE 'Credit' TO 'D:\ProgramFile\...\Credit.mdf',

MOVE 'Credit_Log' TO 'D:\ProgramFile\...\Credit_1.ldf',

NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 10  

 

 

 

/*

 * 文件組的備份與還原,測試過程以下

 * 1、創建空白數據庫後,做完整備份

 * 2、創建數據表後,作差別備份

 * 3、插入記錄後,作事務日記備份

 

    USE BurningDB

    GO 

    CREATE DATABASE BurningDB

    GO

    -- 執行完整備份

   

    CREATE TABLE T1(

    p_id   int,

    p_name varchar(10)

    )

    CREATE TABLE T2(

    s_id   int,

    s_name varchar(10)

    )on FG1

    -- 執行差別備份

      

    insert into T1 values (1, 'tony')

    insert into T1 values (3, 'peter')

 

    insert into T2 values (2, 'wang')

    insert into T2 values (4, 'dong')

   

    select * from T1

    select * from T2

    --drop table T1  

    --drop table T2

   

    -- 最後執行日記備份

*/

 

USE master

GO

 

-- * 備份

-- 備份完整備份

 

BACKUP DATABASE [BurningDB]

FILEGROUP = N'PRIMARY', 

FILEGROUP = N'FG1'

TO  DISK = N'F:\Database\BurningDB_Full.bak'

WITH NOFORMAT, NOINIT,  NAME = N'BurningDB-完整文件組備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

-- 備份差別備份

BACKUP DATABASE [BurningDB]

FILEGROUP = N'PRIMARY', 

FILEGROUP = N'FG1'

TO  DISK = N'F:\Database\BurningDB_DIFF.bak'

WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'BurningDB-差別文件組備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

-- 備份日記備份

BACKUP LOG [BurningDB]

TO  DISK = N'F:\Database\BurningDB_LOG.bak'

WITH NOFORMAT, NOINIT,  NAME = N'BurningDB-事務日誌數據庫備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

 

-- * 還原

-- 還原完整備份

RESTORE DATABASE [BurningDB]

FILE = N'BurningDB', 

FILE = N'FG1' FROM  DISK = N'F:\Database\BurningDB_Full.bak'

WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10

GO

-- 還原差別備份

RESTORE DATABASE [BurningDB]

FILE = N'BurningDB', 

FILE = N'FG1'

FROM  DISK = N'F:\Database\BurningDB_DIFF.bak'

WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10

GO

-- 還原日記備份

RESTORE LOG [BurningDB]

FROM  DISK = N'F:\Database\BurningDB_LOG.bak'

WITH  FILE = 1,  NOUNLOAD,  STATS = 10

GO

 

 

/*

 * 差別備份

 * 只有一個PRIMARY 文件組

-- 備份

USE master

GO

 

BACKUPDATABASE [BurningDB]

TO  DISK = N'F:\Database\b_full.bak'

WITH NOFORMAT,NOINIT,  NAME = N'BurningDB-完整數據庫備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

BACKUPDATABASE [BurningDB]

TO  DISK = N'F:\Database\b_diff.bak'

WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'BurningDB-差別數據庫備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

 

-- 還原

USE master

GO

 

RESTOREDATABASE [BurningDB]

FROM  DISK = N'F:\Database\b_full.bak'

WITH  FILE = 1, NORECOVERY,  NOUNLOAD,REPLACE,  STATS = 10

GO

 

RESTOREDATABASE [BurningDB]

FROM  DISK = N'F:\Database\b_diff.bak'

WITH  FILE = 1, NOUNLOAD,  STATS = 10

GO

 

*/

相關文章
相關標籤/搜索