резервная копия базы данных в расписании или нет, как найти через t-sql - PullRequest
1 голос
/ 17 августа 2010

С помощью одного запроса T-sql мы можем найти: 1. Режим резервного копирования базы данных - [полный, простой, объемный] 2. База данных IS запланирована для резервного копирования [да, нет] 3. Если резервное копирование включено, размер резервной копии БД

и Размер ежедневной резервной копии журнала транзакций? любая помощь

1 Ответ

3 голосов
/ 17 августа 2010

Вы можете запросить таблицу наборов резервных копий msdb для получения такой информации:

SELECT 
    database_name,
    recovery_model, 
    CASE bs.type 
        WHEN 'D' THEN 'FULL'
        WHEN 'I' THEN 'DIFFERENTIAL'
        WHEN 'L' THEN 'TRANSACTION LOG'
        ELSE 'UNKNOWN'
    END AS backup_type, 
    backup_finish_date,
    backup_size,
    compressed_backup_size
FROM msdb.dbo.backupset bs

РЕДАКТИРОВАТЬ:

Этот запрос вернет имя базы данных, модель восстановления и дату последнего времени для полного, дифференциальные и журнальные резервные копии.Если база данных возвращает NULL для последнего FULL, резервное копирование вообще не производится.Если он возвращает NULL для последнего журнала транзакций и база данных использует полное восстановление, резервное копирование выполняется неправильно.

SELECT  
    d.name, 
    d.recovery_model_desc,
    MAX(CASE bs.type WHEN 'D' THEN backup_finish_date ELSE NULL END) AS [last_full_backup_date],
    MAX(CASE bs.type WHEN 'I' THEN backup_finish_date ELSE NULL END) AS [last_diff_backup_date],
    MAX(CASE bs.type WHEN 'L' THEN backup_finish_date ELSE NULL END) AS [last_tlog_backup_date]
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset bs ON bs.database_name = d.name
GROUP BY d.name, d.recovery_model_desc
...