Ключова відмінність резервного копіювання "Повна" та "Копія" лише в тому, чи є LSN (номер послідовності журналу), а саме DatabaseBackupLSN
оновлено.
Коли ви берете повну резервну копію, DatabaseBackupLSN
оновлення оновлюється. Після взяття повної резервної копії, якщо ви берете диференціальну резервну копію, у цього резервного копію є DatabaseBackupLSN
відповідність повної резервної копії, і тому SQL може з'єднати ці два разом (наприклад, з цих LSN відомо, що diff слідувало за повним).
Проблема виникає, коли у вас заплановані резервні копії, тому у вас є початкова резервна копія, а потім послідовність Differentials. Якщо ви вручну скористаєтеся повною резервною копією, вона оновить LSN, а потім з цього моменту кожна диференціальна резервна копія, яку ви берете за допомогою запланованої резервної копії, посилатиметься, що новий LSN не є оригінальним. У випадку, якщо вам потрібно буде відновити, ви можете відновити заплановану повну резервну копію, але коли ви намагалися відновити будь-яку з диференціальних резервних копій, зроблених після ручного завдання, ви виявите, що це не вдасться, оскільки LSN більше не збігаються.
Якщо резервна копія не використовується лише для копіювання, вона не торкається DatabaseBackupLSN
, і як така не розриває ланцюг резервних копій.
Існує хороший опис проблеми, а також чому так багато людей неправильно його розуміють у " Розбитті ланцюга резервного копіювання" - REDUX (або їдять ворона) Майкла К. Кемпбелла, який включає в себе хороші наочні посібники, як цей:
Для кращого пояснення чотирьох різних LSN та того, як вони використовуються, ознайомтеся з Поняттям Simon Liew послідовних номерів журналу SQL Server для резервного копіювання .
Спосіб уникнути проблеми полягає в тому, щоб не мати декількох речей, роблячи стандартні резервні копії бази даних. Будь-які adhoc або вторинні резервні копії повинні бути виконані за допомогою параметра "лише копіювання", див. Резервні копії лише для копіювання (SQL Server) для отримання детальної інформації, але по суті ви використовуєте опцію "Копіювати лише резервну копію" в SSMS, через WITH COPY_ONLY
команду T-SQL, вказану в команді або використовуйте -CopyOnly
параметр PowerShell .