Узнайте, когда была сделана резервная копия базы данных

StackOverflow https://stackoverflow.com/questions/486685

Вопрос

Люди,

Предположим, вы получили отключенную резервную копию базы данных SQL Server (2005 или 2008) и восстановили ее в своем экземпляре SQL Server.

Есть ли способ, есть ли системный каталог или что-то в этом роде, узнать, когда произошла последняя операция записи в эту конкретную базу данных?Я хотел бы иметь возможность узнать, с какого дня была сделана резервная копия конкретной базы данных - к сожалению, на самом деле это нигде явно не записывается, и проверка всех десятков таблиц данных на наличие самой высокой отметки даты / времени на самом деле тоже не вариант....

Есть какие-нибудь идеи?Конечно - я могу посмотреть на отметку даты / времени в файле * .bak - но могу ли я узнать более точно из SQL Server (Management Studio)??

Спасибо!Марк

Это было полезно?

Решение

Вы можете попробовать RESTORE HEADERONLY в вашем файле резервной копии, как описано здесь

это должно дать вам информацию, которую вы ищете.

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

Если у вас есть доступ к экземпляру SQL Server, на котором первоначально было запущено резервное копирование, вы должны иметь возможность запрашивать msdb:

SELECT backup_set_id, backup_start_date, backup_finish_date
FROM  msdb.dbo.backupset  
WHERE database_name = 'MyDBname' AND type = 'D' 

Существует несколько таблиц, относящихся к наборам резервных копий:

  • backupfile - содержит одну строку для каждого резервного файла данных или файла журнала
  • backupmediafamily - содержит одну строку для каждого семейства носителей
  • backupmediaset - содержит одну строку для каждого набора резервных носителей
  • backupset - содержит одну строку для каждого набора резервных копий

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

Немного поздновато, но должно быть тем, чего вы хотите.

Каждая запись в базу данных является записью в файле журнала.Который имеет LSN.Это должно быть сохранено в резервной копии, по крайней мере, для восстановления журнала.

Итак, как сопоставить LSN с датой-временем?

SELECT TOP 5 [End Time] AS BringFirst, *
FROM ::fn_dblog (NULL, NULL)
WHERE [End Time] IS NOT NULL
ORDER BY BringFirst DESC

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

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

Если это не так - вы все равно можете сами написать триггер и применить его к каждой необходимой таблице / столбцу и самостоятельно вести журнал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top