La diferencia clave entre las copias de seguridad completas y las copias de solo copia es si el LSN (número de secuencia de registro) o no y, específicamente, DatabaseBackupLSN
se actualiza.
Cuando realiza una copia de seguridad completa, DatabaseBackupLSN
se actualiza. Después de realizar la copia de seguridad completa, si realiza una copia de seguridad diferencial, esa copia de seguridad tiene una DatabaseBackupLSN
que coincide con la de la copia de seguridad completa y, por lo tanto, SQL puede vincular las dos (por ejemplo, sabe por esos LSN que la diferencia siguió a la completa).
El problema surge cuando ha programado la ejecución de copias de seguridad, por lo que tiene una copia de seguridad completa inicial y luego una secuencia de diferenciales. Si realiza una copia de seguridad completa manualmente, actualizará el LSN y, a partir de ese momento, cada copia de seguridad diferencial que realice mediante la copia de seguridad programada hará referencia a ese nuevo LSN, no al original. En el caso de que necesite restaurar, puede restaurar su copia de seguridad completa programada, pero cuando intente restaurar cualquiera de las copias de seguridad diferenciales realizadas después del trabajo manual, encontrará que fallará ya que los LSN ya no coinciden.
Con una copia de seguridad de solo copia no toca el DatabaseBackupLSN
, y como tal no rompe esa cadena de copias de seguridad.
Hay una buena descripción del problema, así como también por qué tanta gente lo malinterpreta en Breaking the Backup Chain - REDUX (or Eating Crow) de Michael K. Campbell, que incluye buenas guías visuales como esta:
Para una buena explicación de los cuatro LSN diferentes y cómo se usan, eche un vistazo a Comprensión de los números de secuencia de registro de SQL Server para copias de seguridad por Simon Liew.
La forma de evitar el problema es no tener más de una cosa haciendo copias de seguridad estándar de una base de datos. Cualquier copia de seguridad adhoc o secundaria debe hacerse con la opción de solo copia, vea Copias de seguridad de solo copia (SQL Server) para más detalles, pero esencialmente usa la opción "Copiar solo copia de seguridad" en SSMS, a través de T-SQL especifique WITH COPY_ONLY
en el comando , o con PowerShell, use el -CopyOnly
parámetro