如何在将数据库备份保存到磁盘之前压缩它?

How to compress a DB backup before saving it to the disk?

我正在研究将备份并将所述数据库备份保存到指定位置的东西。我想知道是否有办法在 .bak 文件生成后对其进行压缩,但在我实际将其保存到目的地之前未获取备份、压缩 .bak 然后删除未压缩版本.

SqlConnection objconnection = new SqlConnection(connString);
ServerConnection con = new ServerConnection(objconnection.DataSource.ToString());
Server server = new Server(con);
Backup source = new Backup();
source.Action = BackupActionType.Database;
source.Database = dbName;

BackupDeviceItem destination = new BackupDeviceItem(dbName+".bak" , DeviceType.File); 

//-->Zip the backup prior to actually saving backup

source.Devices.Add(destination);

source.SqlBackup(server);

如果您创建了一个存储过程,然后从您的代码中调用它应该可以工作,请查看 method 2,其中说明了如何通过使用 transact SQL 命令

SqlServer 备份产品支持压缩。

https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/backup-compression-sql-server?view=sql-server-2017

如果您采用此方法,您将受益于能够直接从磁盘上的媒体恢复,而不必先扩展媒体。

显然这是不可能的,我必须先创建 .BAK 备份文件,然后 compress/zip 它才能发送。