Cette page explique comment activer la capture des données modifiées (CDC) dans Cloud SQL pour SQL Server. Cette fonctionnalité est disponible pour les bases de données de vos instances.
La CDC vous permet de capturer de nombreux types de modifications. Pour en savoir plus sur l'activation et la désactivation de la CDC, consultez la documentation Microsoft.
Une fois que vous êtes connecté à une instance, l'utilisateur sqlserver
peut effectuer de nombreuses opérations CDC.
Consultez également la page Utiliser les données de modification.
Avant de commencer
Avant de mettre en œuvre la CDC sur une instance, consultez toutes les informations qui figurent sur cette page.
Confirmer la disponibilité des fonctionnalités
La CDC est disponible pour les versions de base de données Cloud SQL pour SQL Server suivantes :
- SQL Server 2022 Standard
- SQL Server 2022 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
Activer la CDC et démarrer les tâches de capture CDC
Votre base de données dispose des procédures stockées suivantes, destinées à être utilisées par l'utilisateur sqlserver
:
msdb.dbo.gcloudsql_cdc_enable_db
msdb.dbo.gcloudsql_cdc_disable_db
Activer la CDC
Pour activer cette fonctionnalité pour une base de données, exécutez la procédure stockée requise et transmettez le nom de la base de données. Exemple :
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
Désactiver la CDC
Pour désactiver cette fonctionnalité pour une base de données, exécutez une commande telle que celle-ci :
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
Lancer des tâches de capture CDC
Une fois la CDC activée, des tâches sont créées pour la capture et le nettoyage. Les tâches ne sont pas visibles par l'utilisateur sqlserver
dans SQL Server Management Studio (SSMS).
Toutefois, vous pouvez modifier les tâches à l'aide de procédures stockées intégrées. En outre, les tâches sont visibles via la procédure stockée suivante :
Pour lancer une tâche de nettoyage, vous pouvez utiliser la commande suivante :
EXEC sys.sp_cdc_start_job @job_type = N'cleanup'
Pour modifier les paramètres de la tâche, vous pouvez utiliser une commande semblable à celle-ci :
EXEC sys.sp_cdc_change_job @job_type = N'capture',
@maxtrans = 20,
@pollinginterval = NULL,
@maxscans = NULL,
@continuous = NULL
Pour plus d'informations sur le démarrage et la modification des tâches, consultez les ressources suivantes :
Voir aussi sys.sp_cdc_add_job
.
Activer la CDC pour une table
Une fois que vous avez activé la CDC pour une base de données, tout utilisateur disposant de l'accès dbo (propriétaire de la base de données) peut configurer le suivi des tables de la base de données.
Pour en savoir plus sur les commandes et les options standards CDC, consultez la page Activer et désactiver la capture de données modifiées.
Suivre les modifications dans une table
Pour suivre une table, utilisez la procédure sys.sp_cdc_enable_table
stockée.
Par exemple, vous pouvez spécifier une commande semblable à celle-ci :
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'customer',
@role_name = N'CDC'
Vérifier si la CDC est activée sur une table
Pour vérifier si la CDC est activée sur une table, utilisez la procédure sys.sp_cdc_help_change_data_capture
stockée.
Par exemple, vous pouvez spécifier une commande semblable à celle-ci :
EXECUTE sys.sp_cdc_help_change_data_capture
@source_schema = N'dbo',
@source_name = N'customer'
Interroger les modifications via une table de modifications CDC
Pour afficher les modifications apportées aux CDC dans une table, utilisez une requête SELECT
sur la table qui est automatiquement créée lorsque la CDC est activée sur cette table.
La table est dénommée comme suit :
<schema>_<table_name>_CT
Par exemple, vous pouvez spécifier une commande semblable à celle-ci :
SELECT * FROM cdc.dbo_customer_CT
Activer la CDC sur une table avec une instance de capture spécifiée
Pour suivre une table avec une "instance de capture", utilisez la procédure stockée sys.sp_cdc_enable_table
.
Par exemple, vous pouvez spécifier une commande semblable à celle-ci :
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'customer',
@role_name = N'CDC',
@capture_instance = N'customer_cdc',
@supports_net_changes = 1
Interroger toutes les modifications d'une instance de capture
Pour afficher les modifications CDC apportées à une table au sein d'une "instance de capture", utilisez la procédure stockée cdc.fn_cdc_get_all_changes_<capture_instance>
.
Par exemple, vous pouvez spécifier une instruction SQL semblable à la suivante :
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn = sys.fn_cdc_get_min_lsn(N'customer_cdc')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_customer_cdc(@from_lsn, @to_lsn, N'all');
Désactiver la CDC pour une table
Pour désactiver le suivi CDC pour une table, utilisez la procédure stockée sys.sp_cdc_disable_table
. Spécifiez une instance de capture pour la désactiver. Vous pouvez également spécifier une instance de capture en tant que 'all'
.
Par exemple, vous pouvez spécifier une commande semblable à la suivante pour désactiver la CDC pour la table :
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'customer',
@capture_instance = N'all'
Supprimer une base de données avec la CDC activée
Si la CDC est activée sur une base de données et que vous essayez de la supprimer, vous pouvez rencontrer des erreurs. Dans ce cas, désactivez la CDC sur la base de données, puis supprimez la base de données.
Par exemple, vous pouvez spécifier une commande semblable à la suivante pour désactiver et supprimer une base de données :
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME' DROP DATABASE 'DATABASE_NAME'
Si vous ne pouvez pas supprimer la base de données, car elle contient des connexions ouvertes, utilisez la requête suivante pour les afficher :
select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'
Fermez toutes les connexions ouvertes. Désactivez la CDC sur la base de données, puis supprimez la base de données.
Importer une base de données compatible CDC
Lors de l'importation d'une base de données compatible CDC, Cloud SQL pour SQL Server conserve l'option KEEP_CDC activée et crée automatiquement des tâches de capture et de nettoyage avec les paramètres par défaut.