共計 1132 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
今天需要把一個省外項目的數據庫從服務器上備份、拷貝到本機 (跨地域傳輸數據庫備份文件)。
連上 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),GETDATE(),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),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak'''+'with STATS = 1,compression'
-- 備份文件格式:Northwind-20170111132424.bak
exec sp_executesql @SqlBackupDataBase -- 調用系統存儲過程,執行 SQL
備份成功后,發現備份的 bak 文件只有 160MB 大小:

最后順利地把這個數據庫備份文件拷貝并還原到本機數據庫。
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!
正文完