MSSQL Server 2012 Transaction Concept 概念:

MSSQL Server 2012 在資料寫的的運作上,是秉持著 WAL(Write Ahead Logging) 的機制,Transaction 存取磁碟的作業,主要是依照下列 4 個步驟來作業:

  • 1. 將 Transaction 寫入 LOG File
  • 2. 將 Transaction 的異動修改 Buffer (記憶體) 裡的資料
  • 3. 交易完成 Transaction Commit
  • 4. 將 Buffer (記憶體) 裡的資料寫入 Disk ( Data Files )裡

 

Recovery Model:

在說明 MSSQL Server 2012 的備份模式前,要先瞭解它的 Recovery Model,MSSQL Server 2012 的 Recovery Model 有三種模式:

Recovery Model  

1. Simple:當 Transaction Commit 交易確認後,此 Transaction Log 就會從 LOG File 中清除(Truncate),所以 LOG File 並不會長大,LOG File 的檔案大小永遠保持最小。

2. Full:所有的 Transaction 交易都會保留在 LOG File 中,所以 LOG File 會一直長大,除了作備份作業後,LOG File 裡的 Transaction 內容才會被清除(Truncate),當然 LOG File 檔案要縮小,還得手動執行 Shrink Log 才行,如下圖示

shrink_cmd

Shrink_Log  

3. Bulk Logged:當有 Bulk Insert 的 SQL 語法時,這些 批次 的 Transaction 不會記錄在 LOG File 中。

 

Backup Type:

在 MSSQL Server 2012 的備份模式有七種模式,

  • 1. Full:所有的 Data files 及 Transaction Log 都備份
  • 2. Differential:只備份差異部份
  • 3. Partial:主要的 Primary Filegroup,與指定的 Filegroup
  • 4. Transaction Log:只備份 Log File 中的 Transaction,回存時需搭配 Full 備份的檔案
  • 5. Tail-log Backup:只備份尚存在 LOG File 中的 Transaction,如 15:00 執行了 Transaction Log 備份,下一次的備份時間在 16:00 ,但 SQL Server 在 15:30 掛了,此時尚存在 LOG File 中的 Transaction 就是 Tail-log。
  • 6. File/File Group:指定的 File or File Group 備份
  • 7. Copy Only:這個模式主要是將現行運行的資料庫線上烤貝 Copy 一份到異地端存放用的,這個作業並不會影響 LSN 的序列號。

 

備份實作:

一般簡單全備的的指令為

BACKUP DATABASE { database_name | @database_name_var }   TO <backup_device> [ ,...n ]   [ <MIRROR TO clause> ] [ next-mirror-to ]   [ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ] [;]

如:
BACKUP DATABASE Northwind
TO DISK ='C:\SQLDB_DATA\back\Northwind.bck'

 但這樣的作法,並不是很好的方式,建議應該建立一個 Backup Device 來作備份的目標物,在 Backup Device 再設定實際的磁碟或磁帶,這樣在未來儲存目標物 (destination) 有變更時,只要修改此 Backup Device 的儲存目標物 (destination) 即可。

建立備份裝置 mybackup(backup device),指令如:

EXEC master.dbo.sp_addumpdevice  @devtype = N'disk', @logicalname = N'mybackup', @physicalname = N'C:\backups\mybackup.bak'

也可以用 SQL Server Management Studio 來建立

backup-device  
  

arrow
arrow
    文章標籤
    mssqlserver backup
    全站熱搜

    MIS 發表在 痞客邦 留言(0) 人氣()