Prise en charge de la capture des données modifiées (CDC) avec RDS Custom pour 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 modifiées (CDC) avec RDS Custom pour 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 des informations détaillées sur les fonctionnalités du CDC, voir Modifier la capture des données dans la documentation Microsoft.

Le fonctionnement du CDC dans SQL Server nécessite la mise en correspondance des valeurs entre le serveur local (qui a server_id = 0) sys.servers et les SERVERPROPERTY('ServerName') identifiants. 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 SERVERPROPERTY('Servername') fonction reflète automatiquement les modifications du network/computer nom. Toutefois, la @@SERVERNAME fonction conserve l'ancien nom du serveur jusqu'au redémarrage du MSSQLSERVER service. 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 le plus d'informations sur le nom up-to-date du serveur sans nécessiter de redémarrage du service.

Disponibilité des régions et des versions

La fonctionnalité CDC est prise en charge partout 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é régionale de RDS Custom pour SQL Server, consultezRégions et moteurs de base de données pris en charge pour RDS Custom pour SQL Server.

Exigences et limitations

Lorsque vous implémentez CDC sur RDS Custom pour SQL Server, tenez compte des principales considérations suivantes :

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

  • RDS ne peut pas modifier le serveur local (qui possèdeserver_id = 0) un nouveau nom d'hôte lorsque les connexions sys.servers à 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 qu'éditeur ou distributeur et a lié les connexions associées à l'ancien nom d'hôte à ses instances d'abonnés.

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