Comment modifier la période de rétention pour CDC ou y mettre une condition (SQL Server 2012)

Je suis dans un environnement SQL Server 2012 et CDC est activé sur une table. Pour résumer, la table est utilisée pour remplir un entrepôt de données (essentiellement, le contenu de la table est dupliqué ailleurs).

Cependant, je viens de remarquer que nous perdons beaucoup de données car CDC a été activé avec le paramètre par défaut de 3 jours. Je sais écrire une requête qui active un CDC avec une période de rétention NEW / DIFFERENT. Mais ce n'est pas la tâche, la tâche est que je dois être en mesure de changer le réglage CDC actuel. Alors, existe-t-il un moyen de modifier la période de rétention?

En outre, existe-t-il un moyen d'empêcher CDC de supprimer les loggings expirés dans l'set? ce qui signifie, existe-t-il un moyen d'implémenter un indicateur qui empêche le CDC de supprimer tous les loggings SAUF si l'logging a déjà été transféré / déplacé.

Merci beaucoup!

sys.sp_cdc_change_job est ce que vous cherchez pour changer la rétention.

En ce qui concerne votre deuxième question, CDC n'a aucun moyen de savoir quelles lignes vous avez traitées et non. Vous devez donc définir votre période de rétention de sorte que vous disposiez de suffisamment de time pour traiter les loggings qui se sont accumulés depuis la dernière exécution du travail ETL. Le stream de travail type qui utilise CDC s'exécute régulièrement (par exemple tous les jours, toutes les semaines). Donc, je sens quelque chose d'étrange quand vous dites que vous perdez des données (à less que la période de rétention actuelle soit inférieure à la durée entre les exécutions ETL).

Plus précisément, la command suivante peut être utilisée (conformément à la réponse ci-dessus):

EXECUTE sys.sp_cdc_change_job N'cleanup', @retention = RetentionTimeInMin --this is a number in minutes