Come sapere se un file di backup contiene CDC?


9

Utilizzando SQL Server 2008 fino al 2014, so come eseguire il backup e il ripristino di un database con Change Data Capture abilitato (CDC), ma quello che sto cercando è un modo per eseguire una query su un file di backup completo per determinare se contiene dati CDC.

Sarebbe fantastico che un modo simile RESTORE FILELISTONLYottenga l'elenco dei file dal database, ma invece ottenga lo stato CDC per determinare se il ripristino dovrà utilizzare il flag KEEP_CDC?

C'è un modo per determinare se un backup contiene dati CDC?

Grazie!

Risposte:


7

(se qualcuno trova un modo - che non credo esista, eliminerò la mia risposta :-))

C'è un modo per determinare se un backup contiene dati CDC?

Non penso che ci sia modo di sapere da un backup, se CDC è abilitato o meno.

Il massimo che si può sapere se il database è stato coinvolto nella replica (sotto il cofano si utilizza l'agente di lettura registri che esegue la scansione del registro delle transazioni) oppure no utilizzando DatabaseBackupLSN nel risultato di RESTORE HEADERONLYDatabaseBackupLSN come "inizio del checkpoint" che viene attivato quando il backup inizia. Questo LSN coinciderà FirstLSNse il backup viene eseguito quando il database è inattivo e non è configurata alcuna replica.

Suppongo che la ragione per cui Microsoft non emerge se CDC è abilitato o meno, potrebbe essere una cosa di sicurezza. CDC è una tecnologia di livello aziendale che consente il rilevamento delle modifiche fino al livello della colonna. Ciò è richiesto da normative come HIPAA, FISMA, ecc.

Dal ripristino o dal collegamento di un database abilitato per Change Data Capture

SQL Server utilizza la seguente logica per determinare se la modifica dell'acquisizione dei dati rimane abilitata dopo il ripristino o il collegamento di un database:

  • Se un database viene ripristinato sullo stesso server con lo stesso nome di database, la modifica dell'acquisizione dei dati rimane abilitata.
  • Se un database viene ripristinato su un altro server, per impostazione predefinita l'acquisizione dei dati di modifica è disabilitata e tutti i metadati correlati vengono eliminati.
  • Per conservare l'acquisizione dei dati delle modifiche, utilizzare l'opzione KEEP_CDC durante il ripristino del database. Per ulteriori informazioni su questa opzione, vedere RIPRISTINA.
  • Se un database viene scollegato e collegato allo stesso server o ad un altro server, la modifica dell'acquisizione dei dati rimane abilitata.
  • Se un database viene collegato o ripristinato con l'opzione KEEP_CDC a qualsiasi edizione diversa da Enterprise, l'operazione viene bloccata perché la modifica dell'acquisizione dei dati richiede SQL Server Enterprise. Viene visualizzato il messaggio di errore 932:

SQL Server non può caricare il database '%. * Ls' perché è abilitata la modifica dell'acquisizione dati. L'edizione attualmente installata di SQL Server non supporta l'acquisizione dei dati di modifica. Disabilitare l'acquisizione dei dati delle modifiche nel database utilizzando un'edizione supportata di SQL Server o aggiornare l'istanza a una che supporti l'acquisizione dei dati delle modifiche.


Kin - Come al solito, sei un DBA rockstar.Grazie per i dettagli. Penso di essere giunto alla stessa conclusione e stavo davvero cercando qualcuno per confermare che non esiste un modo per verificare se un backup contiene CDC. Vi auguro una buona giornata. Grazie!
Steve Stedman,

@SteveStedman Grazie per le belle parole. Si prega di votare / accettare la risposta se si risponde alla domanda. Questo aiuterà anche i futuri lettori :-)
Kin Shah,

Grazie Steve per il post e grazie @Kin, ho imparato qualcosa di nuovo oggi.
SQLBoy,

Nota: CDC è ora disponibile sullo standard 2016 SP1 o versione successiva e sta diventando più mainstream. Vorrei opzioni CDC nell'interfaccia utente di ripristino su SSMS, ho suggerito anche questo su connect: connect.microsoft.com/SQLServer/feedback/details/3144490/…
GilesDMiddleton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.