Prise en charge de la capture des données de modification (CDC) avec RDS Custom for SQL Server - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Prise en charge de la capture des données de modification (CDC) avec RDS Custom for SQL Server

Présentation

RDS Custom for SQL Server fournit un support natif pour la capture des données de modification (CDC), vous permettant de suivre et de capturer les modifications de données dans vos tables SQL Server. Le CDC stocke des métadonnées détaillées sur ces modifications pour une récupération et une analyse ultérieures. Pour plus d’informations sur le fonctionnement du CDC, consultez Capture des données de modification dans la documentation Microsoft.

Le fonctionnement du CDC dans SQL Server nécessite la mise en correspondance des valeurs entre le serveur local (dont server_id = 0) dans sys.servers et les identifiants SERVERPROPERTY('ServerName'). RDS Custom for SQL Server maintient automatiquement cette synchronisation tout au long du cycle de vie de l’instance afin de garantir le fonctionnement continu du CDC même si les hôtes sont remplacés pendant les opérations de maintenance ou de restauration.

Important

Après le basculement d’une instance Multi-AZ, la fonction SERVERPROPERTY('Servername') reflète automatiquement les modifications apportées au nom du réseau/de l’ordinateur. Toutefois, la fonction @@SERVERNAME conserve l’ancien nom du serveur jusqu’au redémarrage du service MSSQLSERVER. L’interrogation de @@SERVERNAME renvoie le nom du serveur précédent après un basculement. Pour obtenir le nom exact du serveur après un basculement, utilisez la requête SQL suivante :

SELECT name FROM sys.servers WHERE server_id=0

Cette requête fournit des informations sur le nom de serveur les plus à jour sans nécessiter de redémarrage du service.

Disponibilité des régions et des versions

La fonctionnalité du CDC est prise en charge dans toutes les Régions AWS où RDS Custom for SQL Server est disponible, pour toutes les versions de SQL Server prises en charge par RDS Custom. Pour plus d’informations sur les versions prises en charge et la disponibilité par région de RDS Custom for SQL Server, consultez Régions et moteurs de base de données pris en charge pour RDS Custom for SQL Server.

Exigences et limitations

Lorsque vous mettez en œuvre le CDC sur RDS Custom for SQL Server, tenez compte des principales considérations suivantes :

  • Si vous configurez manuellement @@SERVERNAME et/ou que le serveur local dans sys.servers pour utiliser des fonctionnalités telles que MS Replication, si la valeur du serveur local (qui a server_id = 0) dans sys.servers est définie sur un format correspondant à *.rds.amazonaws.com ou *.awsrds.*.com, RDS Custom for SQL Server n’essaie pas de la modifier pour qu’elle corresponde à SERVERPROPERTY('ServerName').

  • RDS ne peut pas modifier le serveur local (qui a server_id = 0) dans sys.servers pour lui donner un nouveau nom d’hôte lorsque les connexions à distance ou les serveurs liés utilisent activement l’ancien nom d’hôte. Cette limitation s’applique dans deux scénarios :

    • Lorsqu’un serveur lié établit une connexion avec le serveur local à l’aide d’une connexion à distance associée à l’ancien nom d’hôte

    • Lorsqu’une instance RDS Custom for SQL Server agit en tant que diffuseur de publication ou distributeur et a lié les connexions associées à l’ancien nom d’hôte à ses instances d’abonné.

Résolution des problèmes

Pour identifier les connexions à distance ou les connexions liées associées à l’ancien nom de serveur, utilisez les requêtes suivantes. Validez les résultats et supprimez ces connexions pour garantir le bon fonctionnement du CDC.

SELECT * FROM sys.remote_logins WHERE server_id=0

or

select sss.srvname,ssp.name,srl.remote_name from sys.server_principals ssp inner join sys.remote_logins srl on srl.local_principal_id=ssp.principal_id inner join sys.sysservers sss on srl.server_id = sss.srvid where sss.srvname = @@SERVERNAME