Получить размер резервной копии базы данных SQL Server в .Net - PullRequest
0 голосов
/ 20 марта 2012

Мы хотим создавать резервные копии БД программно.Для этого мы использовали пространство имен SqlServer.Management.Smo и его классы, и оно отлично работает.

Теперь у нас есть требование определить, достаточно ли места в этом месте для хранения файлов резервной копии, прежде чем сохранятьрезервное копирование базы данных в указанное место.

И если не хватает места, мы хотим предупредить пользователя об этом факте.

Один из найденных нами способов - это сделать попытку и поймать исключение, если места недостаточно.в памяти.Но мы ищем решение, чтобы получить размер, прежде чем сохранить его.

1 Ответ

1 голос
/ 20 марта 2012

Невозможно получить точный размер резервной копии, пока вы не попытаетесь выполнить резервное копирование базы данных.

Приблизительный размер можно определить, посмотрев на размеры файлов базы данных.Это полезно, если вы не знаете, насколько он будет большим, и вам нужно «опубликовать» некоторую оценку несчастному пользователю, чей диск заполнен.Но реальные размеры базы данных, вероятно, будут намного меньше.

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

Вы можете сравнить любое из этих значений с объемом свободного дискового пространства.Может быть полезно добавить некоторый запас к числу, полученному последним методом, чтобы учесть некоторый ожидаемый постепенный рост базы данных.

...