При резервном копировании базы данных в backup header
и в msdb (backupset
таблица) записываются некоторые данные.
В случае полного и дифференциального резервного копирования интересуют database_backup_lsn
, checkpoint_lsn
, is_copy_only
.
Вы можете восстановить differential
резервную копию только через соответствующую full
резервную копию.
Чтобы найти правильный full backup
для данного differential backup
, вы должны рассматривать только полные резервные копии, которые НЕ являются копируемыми. Соответствующая полная резервная копия будет иметь checkpoint_lsn
равное database_backup_lsn
данной разностной резервной копии.
Вот изображение, на котором я помечаю тем же цветом full backup
s, который может быть базовым для differential backup
s:
Теперь, например, вы хотите найти соответствующий full backup
.
Сначала вы должны найти дифференциальную резервную копию database_backup_lsn
, в моем примере это 23064679000002372000077. Затем выполните такой запрос, и вы найдете соответствующую full
резервную копию.
select type,
backup_start_date,
backup_finish_date,
database_backup_lsn,
checkpoint_lsn,
is_copy_only,
f.family_sequence_number,
f.physical_device_name
from msdb..backupset s
join msdb..backupmediafamily f
on f.media_set_id = s.media_set_id
where database_name = 'basedati_bi' and type = 'D' and is_copy_only = 0 and checkpoint_lsn = 23064679000002372000077
person
sepupic
schedule
01.12.2017
NORECOVERY
, затем DIFF с помощьюRECOVERY
- person Squirrel   schedule 01.12.2017