Основное различие между полным и только для копирования резервным копированием заключается в том, является ли LSN (порядковый номер журнала) и, в частности, DatabaseBackupLSN
обновляется обновляется.
Когда вы делаете полную резервную копию, DatabaseBackupLSN
обновляется. После создания полной резервной копии, если вы делаете дифференциальную резервную копию, эта резервная копия имеетDatabaseBackupLSN
что и полная резервная копия, и, следовательно, SQL может связать их вместе (например, из этих LSN он знает, что diff следовал за полной).
Проблема возникает, когда у вас запланировано выполнение резервных копий, поэтому у вас есть начальная полная резервная копия, а затем последовательность разностных данных. Если вы вручную создадите полную резервную копию, она обновит LSN, и с этого момента каждая дифференциальная резервная копия, которую вы делаете через запланированное резервное копирование, будет ссылаться на новый LSN, а не на исходную. В случае необходимости восстановления вы можете восстановить запланированное полное резервное копирование, но при попытке восстановить любое из разностных резервных копий, выполненных после ручного задания, вы обнаружите, что оно не будет выполнено, поскольку номера LSN больше не совпадают.
С резервной копией только для копирования она не затрагивает DatabaseBackupLSN
и, следовательно, не нарушает эту цепочку резервных копий.
Есть хорошее описание проблемы, а также почему многие люди неправильно ее понимают в книге «Разрыв резервной цепи - REDUX (или Eating Crow) » Майкла К. Кэмпбелла, которая включает в себя такие хорошие визуальные руководства, как этот:
Для хорошего объяснения четырех разных номеров LSN и того, как они используются, взгляните на « Понимание номеров последовательностей журналов SQL Server для резервных копий » Саймона Лью.
Способ избежать этой проблемы состоит в том, чтобы не делать больше чем одну вещь, делающую стандартные резервные копии базы данных. Любое резервное или вторичное резервное копирование следует выполнять с помощью параметра «только для копирования» , см. Подробности в разделе « Резервные копии только для копирования» (SQL Server) , но, по сути, вы используете опцию «Резервное копирование только в копии» в SSMS, через T-SQL, WITH COPY_ONLY
указанный в команде. или с помощью PowerShell используйте -CopyOnly
параметр.