Comment savoir si un fichier de sauvegarde contient CDC?

9

À l'aide de SQL Server 2008 jusqu'en 2014, je sais comment sauvegarder et restaurer une base de données avec Change Data Capture activé (CDC), mais ce que je recherche, c'est un moyen d'interroger un fichier de sauvegarde complet pour déterminer s'il contient des données CDC.

Ce qui serait génial serait une manière comme RESTORE FILELISTONLYcelle-ci d'obtenir la liste des fichiers de la base de données, mais d'obtenir à la place l'état CDC pour déterminer si la restauration devra utiliser l'indicateur KEEP_CDC?

Existe-t-il un moyen de déterminer si une sauvegarde contient des données CDC?

Merci!

Steve Stedman
la source

Réponses:

7

(si quelqu'un trouve un moyen - dont je ne pense pas qu'il existe, je supprimerai ma réponse :-))

Existe-t-il un moyen de déterminer si une sauvegarde contient des données CDC?

Je ne pense pas qu'il existe un moyen de savoir à partir d'une sauvegarde, si CDC est activé ou non.

Tout ce que vous pouvez savoir si la base de données a été impliquée dans la réplication (sous le capot utilise un agent de lecture de journal qui analyse le journal des transactions) ou non en utilisant DatabaseBackupLSN dans le résultat de RESTORE HEADERONLYDatabaseBackupLSN comme c'est le «début du point de contrôle» qui est déclenché lorsque la sauvegarde départs. Ce LSN coïncidera FirstLSNsi la sauvegarde est effectuée lorsque la base de données est inactive et qu'aucune réplication n'est configurée.

Je suppose que la raison pour laquelle Microsoft ne fait pas surface, que CDC soit activé ou non, pourrait également être une question de sécurité. CDC est une technologie de niveau entreprise qui permet de suivre les modifications jusqu'au niveau de la colonne. Ceci est requis par des réglementations comme HIPAA, FISMA, etc.

De la restauration ou de l'attachement d'une base de données activée pour la capture de données modifiées

SQL Server utilise la logique suivante pour déterminer si la capture des données modifiées reste activée après la restauration ou la connexion d'une base de données:

  • Si une base de données est restaurée sur le même serveur avec le même nom de base de données, la capture des données modifiées reste activée.
  • Si une base de données est restaurée sur un autre serveur, par défaut, la capture des données modifiées est désactivée et toutes les métadonnées associées sont supprimées.
  • Pour conserver la capture des données modifiées, utilisez l'option KEEP_CDC lors de la restauration de la base de données. Pour plus d'informations sur cette option, voir RESTORE.
  • Si une base de données est détachée et attachée au même serveur ou à un autre serveur, la capture des données modifiées reste activée.
  • Si une base de données est attachée ou restaurée avec l'option KEEP_CDC à une édition autre qu'Enterprise, l'opération est bloquée car la capture des données modifiées nécessite SQL Server Enterprise. Le message d'erreur 932 s'affiche:

SQL Server ne peut pas charger la base de données '%. * Ls' car la capture des données modifiées est activée. L'édition actuellement installée de SQL Server ne prend pas en charge la capture de données modifiées. Désactivez la capture des données modifiées dans la base de données à l'aide d'une édition prise en charge de SQL Server ou mettez à niveau l'instance vers une version prenant en charge la capture des données modifiées.

Kin Shah
la source
Kin - Comme d'habitude, vous êtes un DBA rockstar.Merci pour les détails. Je pense que j'étais arrivé à la même conclusion, et je cherchais vraiment quelqu'un pour valider qu'il n'y a pas de moyen de simplement vérifier si une sauvegarde contient CDC. Passez une bonne journée. Merci!
Steve Stedman
@SteveStedman Merci pour vos aimables paroles. Veuillez voter / accepter la réponse si vous avez répondu à votre question. Cela aidera également les futurs lecteurs :-)
Kin Shah
Merci Steve pour le message et merci @Kin, j'ai appris quelque chose de nouveau aujourd'hui.
SQLBoy
Remarque: CDC est maintenant disponible sur 2016SP1 Standard ou supérieur, et devient plus courant. Je voudrais des options CDC dans l'interface de restauration sur SSMS, je l'ai également suggéré sur connect: connect.microsoft.com/SQLServer/feedback/details/3144490/…
GilesDMiddleton