Получить дату последней резервной копии базы данных SQL Server, если имя db файла резервной копии не соответствует базе данных

Из-за недосмотра мои резервные копии базы данных не имеют журнала транзакций, но у меня есть полные резервные копии с пятидневными интервалами. Чтобы внести некоторые изменения в текущую версию базы данных, я восстановил каждую из этих резервных копий в отдельные базы данных, каждая из которых названа в формате <dbname><backupdate>, где <dbname> - это имя моей базы данных.

Мне нужно найти дату резервного копирования, связанную с каждой базой данных программно, где я не могу предположить формат имен баз данных. Поскольку <dbname><backupdate> (имя моих баз данных) не соответствует <dbname> (имя базы данных в файлах резервных копий), я не могу использовать запрос, который нашел на нескольких других страницах:

SELECT d.name, b.backup_start_date
FROM sys.databases d
LEFT OUTER JOIN msdb..backupset b ON d.name = b.database_name
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
621
1

Ответы 1

Я обнаружил, что решение лежит в таблице msdb..restorehistory.

SELECT d.name, MAX(b.backup_start_date) backup_date
FROM sys.databases d
JOIN msdb..restorehistory r ON r.destination_database_name = d.name
JOIN msdb..backupset b ON r.backup_set_id = b.backup_set_id
WHERE d.database_id > 4 -- for excluding system databases
GROUP BY d.name
ORDER BY backup_date, d.name

Это вернет только базы данных, которые были восстановлены из резервной копии. Если вы хотите включить все несистемные базы данных, измените операторы JOIN на LEFT OUTER JOIN.

Другие вопросы по теме