0

我正在备份和恢复 SQL 数据库。我是新手。我有一个与备份过程相关的问题。我有SQL 数据库,我正在使用BACKUPRESTORE类来执行数据库的备份和恢复。

我想使用split backup使我的程序更高效。我有大约 15 到 20 GB 的数据。所以我想将我的备份文件拆分为指定的限制,比如说 8-10 GB。我可以使用下面的 SQL 语句来做到这一点:

BACKUP DATABASE AdventureWorks
TO  DISK = 'C:\Backup\MultiFile\AdventureWorks1.bak',
    DISK = 'C:\Backup\MultiFile\AdventureWorks2.bak',
    DISK = 'C:\Backup\MultiFile\AdventureWorks3.bak'
GO 

但我想通过使用 Microsoft.SqlServer.Management.Smo.Backup类来做到这一点。我想得到我的备份文件的大小。因为我的标准是在我的数据库大小超过 10 GB 时拆分文件,否则它不会拆分我的文件。所以我的问题是如何在备份时获取数据库的大小。

4

2 回答 2

1

如果您的原始查询像您说的那样工作(我不知道它是否工作正常),您只需将其他设备添加到Backup对象

这应该是等效的 SMO 代码

var server = new Server(/*...*/);
var backup = new Backup();

backup.Action = BackupActionType.Database;
backup.Database = "AdventureWorks";

backup.Devices.AddDevice(@"C:\Backup\MultiFile\AdventureWorks1.bak",DeviceType.File);
backup.Devices.AddDevice(@"C:\Backup\MultiFile\AdventureWorks2.bak",DeviceType.File);
backup.Devices.AddDevice(@"C:\Backup\MultiFile\AdventureWorks3.bak",DeviceType.File);

backup.SqlBackup(server);
于 2013-08-21T07:05:35.790 回答
0

您是否尝试过BlockSizeBackup对象上设置?

var server = new Server();
var backup = new Backup { BlockSize = 1073741824 };

// other settings

backup.SqlBackup(server);
于 2013-08-21T06:46:09.543 回答