1. 程式人生 > 資料庫 >sql server 2008 壓縮備份資料庫(20g)

sql server 2008 壓縮備份資料庫(20g)

今天需要把一個省外專案的資料庫從伺服器上備份、拷貝到本機(跨地域傳輸資料庫備份檔案)。

連上VPN,通過遠端桌面連線,連線上伺服器,發現數據庫檔案已經有20G以上大小了。

檔案太大,公司網路也不穩定,根本不可能通過網路傳輸過來。

於是,把資料庫的恢復模式由“完整”模式設定為“簡單”模式,接著收縮資料庫,

資料庫瞬間由20G變成1G多點。

在SSMS中,新建查詢視窗,執行資料庫備份語句:

--定義變數,把備份資料庫的QL指令碼賦值給變數
declare @SqlBackupDataBase as nvarchar(1000)
set @SqlBackupDataBase=N'BACKUP DATABASE Northwind TO DISK = ''D:\Northwind-'+
CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),108),':','')+'.bak'''
--備份檔案格式:Northwind-20170111132424.bak
exec sp_executesql @SqlBackupDataBase --呼叫系統儲存過程,執行SQL

備份成功後,備份的bak檔案有1.16G大小:

接著,興沖沖地拷貝bak檔案到本機,

結果:總是在傳輸的過程中,傳輸自動中斷。

原因是 網路不穩定,網路的頻寬限制。

想想,能不能備份成更小的bak檔案呢?

最後用到了sql server 2008 以上版本的資料庫的新特性:壓縮備份資料庫。

其實就是在備份資料庫的語句上加上 “with STATS = 1,compression”,

完整壓縮備份資料庫語句如下:

--定義變數,把備份資料庫的QL指令碼賦值給變數
declare @SqlBackupDataBase as nvarchar(1000)
set @SqlBackupDataBase=N'BACKUP DATABASE Northwind TO DISK = ''D:\Northwind-'+
CONVERT(varchar(11),'')+'.bak'''
+'with STATS = 1,compression'
--備份檔案格式:Northwind-20170111132424.bak
exec sp_executesql @SqlBackupDataBase --呼叫系統儲存過程,執行SQL

備份成功後,發現備份的bak檔案只有160MB大小:

最後順利地把這個資料庫備份檔案拷貝並還原到本機資料庫。