在.Net中获取SQL Server数据库备份大小

本文关键字:数据库 备份 Server SQL Net 获取 | 更新日期: 2023-09-27 18:28:23

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

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

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

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

在.Net中获取SQL Server数据库备份大小

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

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

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

您可以将这两个值中的任何一个与可用磁盘空间量进行比较。在后一种方法获得的数字上增加一些裕度可能是有用的,以考虑到一些预期的数据库逐渐增长。