Esta es mi primera publicación de DBA.SE, así que infórmeme de cualquier error, ¡gracias!
Soy un nuevo DBA (no un profesional de TI, simplemente nadie más en la empresa para hacerlo), así que cuanto más básica sea la explicación, mejor. He estado leyendo sobre estrategias de copia de seguridad de bases de datos (o, como he aprendido a llamarlas, "estrategias de restauración"). Entiendo lo que hacen las copias de seguridad completas, diferenciales y del registro de transacciones, pero quiero saber por qué una copia de seguridad diferencial solo puede basarse en la copia de seguridad completa más reciente.
Si una copia de seguridad diferencial es todo lo que ha cambiado desde la última copia de seguridad completa, ¿por qué no puede basarse la diferencia en ninguna copia de seguridad de mi elección? Para ser más claro, estoy preguntando sobre la especificación de la base cuando se toma la copia de seguridad , no cuando se restaura. Supongo que al restaurar elegiría la base correcta y el diferencial correspondiente para realizar la restauración (no usar un diferencial hecho desde la base B para restaurar desde la base A).
¿Cuál es la razón que impide que esta funcionalidad sea posible? Me imagino que debe haber una razón, simplemente no sé cuál es.
Nota: Entiendo que la base no se puede especificar, pero mi pregunta es ¿por qué no ? (Tampoco me interesa discutir sobre "¿por qué lo harías?")
Analogía
Aquí hay una analogía de cómo entiendo una copia de seguridad diferencial:
Tengo un archivo de Excel con algunos datos en las celdas.
El día 1, hago una copia de este archivo y la guardo en otro lugar (la "copia de seguridad completa").
El día 2, miro el archivo y lo comparo con la copia de seguridad que hice el día 1, y noto todas las celdas que han cambiado y cuáles son sus nuevos valores (una "copia de seguridad diferencial"). No estoy notando cada cambio realizado en una celda, solo cuál es su valor final. Si la celda A1 comenzó como "Alfred", cambió a "Betty", "Charlie", luego "Dave", solo notaría que "A1 ahora es Dave".
El día 3, comparo el archivo actual con el archivo de respaldo nuevamente y noto los cambios (otra "copia de respaldo diferencial" con la misma base que el día 2). Una vez más, solo observando los valores finales por celda en el momento observado, no todos los valores que la celda ha tenido durante todo el día.
El día 4, comparo nuevamente y noto los cambios nuevamente. Continuando con la celda A1, ahora dice "Sarah", incluso si fueron otros 10 nombres a lo largo del día, y todo lo que noto es "Ahora A1 es Sarah".
El día 5, mi archivo se estropea; entonces, miro la copia de respaldo que hice el día 1, luego los estados finales anotados el día 4, y aplico los cambios anotados a la copia de respaldo y ahora tengo el archivo "restaurado" como estaba en el día 4 Entonces, miro la copia de seguridad realizada el día 1, veo que el día 4 la celda A1 terminó como "Sarah", y cambio la celda de copia de seguridad A1 para que sea "Sarah".
¿Por qué sería importante si hubiera hecho otra copia de seguridad ("completa") del archivo el día 2? ¿Por qué no sería posible comparar (leer, "hacer una copia de seguridad diferencial de") el archivo el día 3 o 4 con la copia realizada el día 1? Según tengo entendido, SQL Server me exigiría que compare (al tomar otra copia de seguridad diferencial) con una copia de seguridad completa realizada el día 2 (si se hubiera hecho una), no hay otra opción.
COPY_ONLY
: si el OP tomara una copia de seguridad completa regular en el día 1 y unaCOPY_ONLY
copia de seguridad completa en el día 2, entonces qué problemas se causarían al aplicar un diferencial posterior desde esa misma base hasta el día 2 de respaldo?