sql server 2008 壓縮備份資料庫(20g)
阿新 • • 發佈:2020-01-09
今天需要把一個省外專案的資料庫從伺服器上備份、拷貝到本機(跨地域傳輸資料庫備份檔案)。
連上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大小:
最後順利地把這個資料庫備份檔案拷貝並還原到本機資料庫。