我如何在.net中拆分大型SQL数据库备份文件?

时间:2013-08-21 06:23:26

标签: .net sql backup restore

我正在努力备份和恢复SQL数据库。我是新手。我有一个与备份过程有关的问题。我有 SQL数据库,我正在使用 BACKUP RESTORE 类来执行数据库的备份和还原。我想使用拆分备份使我的程序更有效率。我有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则拆分文件,否则它将不会拆分我的文件。所以我的问题是如何在备份时获取数据库的大小。期待这一点,抱歉给您带来不便。

提前致谢。快速回复表示赞赏。

2 个答案:

答案 0 :(得分:1)

如果您的原始查询的工作方式与您所说的一样(如果它以这种方式工作,我不知道如何)我只需要将其他设备添加到Backup对象< / p>

这应该是等效的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);

答案 1 :(得分:0)

您是否尝试在Backup对象上设置BlockSize

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

// other settings

backup.SqlBackup(server);