示例sql脚本来压缩和传输数据库备份文件

时间:2020-03-06 14:40:22  来源:igfitidea点击:

我正在寻找一个示例sql脚本来压缩数据库备份文件(.bak)并将其传输到远程位置。如果有,请分享。

解决方案

我们可以使用xp_cmdshell调用用于压缩和复制的命令。
在这里的示例中,我使用winzip命令行(用于压缩/解压缩)和xcopy来传输文件。

EXEC master..xp_cmdshell 'C:\"Program Files"\WinZip\wzzip C:\Database.bak.zip C:\Database.bak';
EXEC master..xp_cmdshell 'C:\"Program Files"\WinZip\wzunzip -o "C:\Database.bak.zip" "C:\Database"';
EXEC master..xp_cmdshell 'xcopy "C:\Database.bak.zip" "\networkshare\Backups" /Y'

xp_cmdshell是一种方法,尽管它不是理想的方法,因为启用它会使服务器的安全性降低。

我的开源项目SQL Server压缩备份可一步完成我们要寻找的内容:

msbp.exe backup "db(database=model)" "zip64" "local(path=\server\share\path\model.full.bak.zip)"

SQL Server压缩备份的安装仅是" xcopy"部署-无需安装/卸载任何内容,如果我们只需执行一次,则非常理想。

它使用zip64,因为标准zip格式的限制为4 GB。可用的其他压缩格式是gzip和bzip2,没有限制。