Узнайте, когда была сделана резервная копия базы данных - PullRequest
2 голосов
/ 28 января 2009

Люди,

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

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

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

Спасибо! Marc

Ответы [ 4 ]

2 голосов
/ 28 января 2009

Если у вас есть доступ к экземпляру 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 - содержит по одной строке для каждого резервного набора

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

1 голос
/ 01 августа 2009

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

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

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

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

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

1 голос
/ 20 мая 2009

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

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

0 голосов
/ 28 января 2009

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

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

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