【问题标题】:How do I split large SQL database backup files in .net?如何在 .net 中拆分大型 SQL 数据库备份文件?
【发布时间】:2013-08-21 06:23:26
【问题描述】:

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

我想使用拆分备份使我的程序更高效。我有大约 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 时拆分文件,否则它不会拆分我的文件。所以我的问题是如何在备份时获取数据库的大小。

【问题讨论】:

  • 您是否有与Backup 类一起使用的现有代码?如果有,请给我看一下好吗?

标签: .net sql backup restore


【解决方案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);

【讨论】:

  • 感谢 Scott 的快速回复。这个我没试过。但我认为这会奏效。但是对不起,我忘了写另一个问题。让我告诉你另一个案例。如果我的数据库大小超过 10 GB 的特定限制,我想拆分我的备份文件。所以我的问题是如何获得备份文件的实际大小?很抱歉给您带来不便。
  • 我不知道,我以前从未需要拆分备份文件。我只知道如何使用 SMO 将您在 SQL 中发布的内容直接翻译成 C# 语法。
  • 感谢 Scott 的关心。那么在我为 Backup 编写代码之前没有其他方法可以获取备份文件的实际大小吗?
  • 如我所说;可能有也可能没有一种简单的方法来做到这一点。我只是对拆分备份知之甚少,无法回答。
【解决方案2】:

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

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

// other settings

backup.SqlBackup(server);

【讨论】:

  • 感谢您的快速回复。不,我没有尝试过,因为我提到过我是新手。我目前正在努力,无论发生什么我都会回复。
  • 我不认为 BlockSize 做你认为它做的事情,来自 msdn "支持的大小是 512、1024、2048、4096、8192、16384、32768 和 65536 (64 KB) 字节。磁带设备的默认值为 65536,否则为 512。备份会自动为设备选择默认值。"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多