Change Data Capture (CDC)-Unterstützung mit RDS Custom für SQL Server
Übersicht
RDS Custom für SQL Server bietet native Unterstützung für Change Data Capture (CDC), sodass Sie Datenänderungen in Ihren SQL-Server-Tabellen verfolgen und erfassen können. CDC speichert detaillierte Metadaten zu diesen Änderungen für den späteren Abruf und die Analyse. Weitere Informationen über die Arbeitsweise von CDC finden Sie unter Change Data Capture
Für den CDC-Vorgang in SQL Server sind übereinstimmende Werte zwischen dem lokalen Server (server_id = 0) und den Bezeichnern sys.servers und SERVERPROPERTY('ServerName') erforderlich. RDS Custom für SQL Server behält diese Synchronisation während des gesamten Lebenszyklus der Instance automatisch bei, um sicherzustellen, dass CDC auch dann kontinuierlich funktioniert, wenn Hosts während Wartungs- oder Wiederherstellungsvorgängen ersetzt werden.
Wichtig
Nach einem Failover einer Multi-AZ-Instance spiegelt die Funktion SERVERPROPERTY('Servername') automatisch Änderungen im Netzwerk-/Computernamen wider. Die Funktion @@SERVERNAME behält jedoch den alten Servernamen bei, bis der MSSQLSERVER-Service neu gestartet wird. Die Abfrage von @@SERVERNAME gibt nach einem Failover den vorherigen Servernamen zurück. Verwenden Sie die folgende SQL-Abfrage, um nach einem Failover den richtigen Servernamen zu ermitteln:
SELECT name FROM sys.servers WHERE server_id=0
Diese Abfrage liefert die aktuellsten Informationen zum Servernamen, ohne dass ein Neustart des Service erforderlich ist.
Verfügbarkeit von Regionen und Versionen
Die CDC-Funktion wird in allen AWS-Regionen unterstützt, in denen RDS Custom für SQL Server verfügbar ist, und für alle SQL-Server-Versionen, die von RDS Custom unterstützt werden. Weitere Informationen zu unterstützten Versionen und zur Verfügbarkeit von Regionen von RDS Custom für SQL Server finden Sie unter Unterstützte Regionen und DB-Engines für RDS Custom für SQL Server.
Anforderungen und Einschränkungen
Berücksichtigen Sie bei der Implementierung von CDC auf RDS Custom für SQL Server die folgenden wichtigen Überlegungen:
-
Wenn Sie
@@SERVERNAMEund/oder den lokalen Server insys.serversmanuell so einrichten, dass er Features wie MS Replication verwendet, falls der Wert des lokalen Servers (server_id = 0) insys.serversauf ein Format festgelegt ist, das mit*.rds.amazonaws.com.rproxy.govskope.caoder*.awsrds.*.comübereinstimmt, versucht RDS Custom für SQL Server nicht, dies anSERVERPROPERTY('ServerName')anzupassen. -
RDS kann den lokalen Server (
server_id = 0) insys.serversnicht in einen neuen Hostnamen ändern, solange Remote-Anmeldungen oder verknüpfte Server aktiv den alten Hostnamen verwenden. Diese Einschränkung gilt in zwei Szenarien:-
Wenn ein verknüpfter Server mithilfe einer Remote-Anmeldung, die dem alten Hostnamen zugeordnet ist, eine Verbindung zum lokalen Server herstellt
-
Wenn eine Instance von RDS Custom für SQL Server als Publisher oder Verteiler fungiert und Anmeldenamen, die dem alten Hostnamen zugeordnet sind, mit ihren Subscriber-Instances verknüpft sind.
-
Fehlerbehebung
Verwenden Sie die folgenden Abfragen, um Remote-Anmeldungen oder verknüpfte Anmeldungen zu identifizieren, die mit dem alten Servernamen verknüpft sind. Überprüfen Sie die Ergebnisse und entfernen Sie diese Anmeldungen, um sicherzustellen, dass CDC ordnungsgemäß funktioniert.
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