sql server 2008 压缩备份数据库(20g)

58次阅读
没有评论

共计 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 大小:

sql server 2008 压缩备份数据库 (20g)

接着,兴冲冲地拷贝 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 大小:

sql server 2008 压缩备份数据库 (20g)

最后顺利地把这个数据库备份文件拷贝并还原到本机数据库。

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计1132字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)