我正在努力备份和恢复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则拆分文件,否则它将不会拆分我的文件。所以我的问题是如何在备份时获取数据库的大小。期待这一点,抱歉给您带来不便。
提前致谢。快速回复表示赞赏。
答案 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);