¿Cómo saber si un archivo de respaldo contiene CDC?

9

Utilizando SQL Server 2008 hasta 2014, sé cómo hacer una copia de seguridad y restaurar una base de datos con Change Data Capture habilitado (CDC), pero lo que estoy buscando es una forma de consultar un archivo de copia de seguridad completo para determinar si contiene datos de CDC.

Lo que sería genial sería una forma como RESTORE FILELISTONLYesa obtiene la lista de archivos de la base de datos, pero en su lugar obtiene el estado de CDC para determinar si la restauración necesitará usar el indicador KEEP_CDC.

¿Hay alguna manera de determinar si una copia de seguridad contiene datos de CDC?

¡Gracias!

Steve Stedman
fuente

Respuestas:

7

(si alguien encuentra un camino, que no creo que exista, eliminaré mi respuesta :-))

¿Hay alguna manera de determinar si una copia de seguridad contiene datos de CDC?

No creo que haya una forma de saber de una copia de seguridad, si CDC está habilitado o no.

Lo máximo que puede saber si la base de datos estuvo involucrada en la replicación (bajo el capó usa un agente lector de registro que escanea el registro de Transacción) o no utilizando DatabaseBackupLSN en el resultado de RESTORE HEADERONLYDatabaseBackupLSN como es el "comienzo del punto de control" que se activa cuando la copia de seguridad empieza. Este LSN coincidirá con FirstLSNsi la copia de seguridad se toma cuando la base de datos está inactiva y no se configura la replicación.

Supongo que la razón por la que Microsoft no aparece si CDC está habilitado o no, también podría ser una cuestión de seguridad. CDC es una tecnología de nivel empresarial que permite el seguimiento de los cambios hasta el nivel de la columna. Esto es requerido por regulaciones como HIPAA, FISMA, etc.

De restaurar o adjuntar una base de datos habilitada para cambiar la captura de datos

SQL Server utiliza la siguiente lógica para determinar si la captura de datos de cambio permanece habilitada después de restaurar o adjuntar una base de datos:

  • Si se restaura una base de datos en el mismo servidor con el mismo nombre de base de datos, la captura de cambio de datos permanece habilitada.
  • Si una base de datos se restaura a otro servidor, de forma predeterminada, la captura de datos de cambio se deshabilita y se eliminan todos los metadatos relacionados.
  • Para retener la captura de datos modificados, use la opción KEEP_CDC al restaurar la base de datos. Para obtener más información sobre esta opción, consulte RESTAURAR.
  • Si una base de datos se separa y se conecta al mismo servidor u otro servidor, la captura de datos de cambio permanece habilitada.
  • Si se adjunta o se restaura una base de datos con la opción KEEP_CDC a cualquier edición que no sea Enterprise, la operación se bloquea porque la captura de cambio de datos requiere SQL Server Enterprise. Se muestra el mensaje de error 932:

SQL Server no puede cargar la base de datos '%. * Ls' porque la captura de cambio de datos está habilitada. La edición actualmente instalada de SQL Server no admite la captura de datos modificados. Deshabilite la captura de datos modificados en la base de datos utilizando una edición compatible de SQL Server o actualice la instancia a una que admita la captura de datos modificados.

Kin Shah
fuente
Kin - Como siempre, eres un DBA rockstar. Gracias por los detalles. Creo que había llegado a la misma conclusión, y realmente estaba buscando a alguien para validar que no hay una forma de verificar si una copia de seguridad contiene CDC. Que tengas un gran día. ¡Gracias!
Steve Stedman
@SteveStedman Gracias por sus amables palabras. Vota a favor / acepta la respuesta si tu pregunta es respondida. Esto también ayudará a los futuros lectores :-)
Kin Shah
Gracias Steve por la publicación y gracias @Kin, aprendí algo nuevo hoy.
SQLBoy
Nota: CDC ahora está disponible en 2016SP1 Standard o superior, y se está volviendo más convencional. Me gustaría tener opciones de CDC en la interfaz de usuario de restauración en SSMS, también sugerí esto en connect: connect.microsoft.com/SQLServer/feedback/details/3144490/…
GilesDMiddleton