共计 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 网 – 提供最优质的资源集合!
正文完