【问题标题】:Get SQL Server database backup size in .Net在 .Net 中获取 SQL Server 数据库备份大小
【发布时间】:2012-03-20 04:33:33
【问题描述】:

我们希望以编程方式进行数据库备份。为此,我们使用了SqlServer.Management.Smo 命名空间及其类,它运行良好。

现在我们需要在将 db 备份保存到指定位置之前确定该位置是否有足够的空间来保存备份文件。

如果没有足够的空间,我们想提醒用户这一事实。

我们发现的一种方法是,如果内存中没有足够的空间,则放置一个 try catch 并捕获异常。但是我们正在寻找一种解决方案来在保存之前获取大小。

【问题讨论】:

  • 但在创建备份之前,您不会知道备份的大小,前提是有足够的可用空间。我认为唯一现实的解决方案是在驱动器上有 x 百分比的可用空间时警告用户。
  • 您是在服务器本地备份文件,然后复制到新位置还是备份到目标位置?
  • @tsells:不,实际上它是一个表单应用程序并安装在客户端计算机上。我们正在将备份直接带到指定位置。
  • @mahesh:正如 Jirka 在他的回答中所说,如果不进行实际备份,就无法获得确切的备份大小——您能做的最好的事情就是使用其中一种技术进行估计在另一篇文章中,可能会添加 5 - 10% 的填充以确保安全。

标签: c# .net sql-server backup smo


【解决方案1】:

在您尝试备份数据库之前,无法获得确切的备份大小。

可以通过查看数据库文件大小来猜测大概大小。如果您不知道它有多大,并且您需要向磁盘已满的不幸用户“发布”一些估计值,这将很有用。但实际的数据库大小可能会小很多

SELECT CAST(SUM(size) AS DECIMAL) * 8192 from sys.database_files

鉴于无论如何您都必须添加该 try-catch 子句,因此可以通过查看上次备份大小来获得更容易和更准确的估计,如下所示:

SELECT TOP 1 database_name, backup_size FROM msdb..backupset ORDER BY backup_finish_date DESC

您可以将这些值中的任何一个与可用磁盘空间量进行比较。为通过后一种方法获得的数字增加一些余量以考虑一些预期的逐渐数据库增长可能会很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多