Suporte à captura de dados de alteração (CDC) com o RDS Custom para SQL Server
Visão geral
O RDS Custom para SQL Server oferece suporte nativo à captura de dados de alteração (CDC), permitindo que você acompanhe e capture modificações nos dados de suas tabelas do SQL Server. A CDC armazena metadados detalhados sobre essas alterações para recuperação e análise posteriores. Para ter mais informações sobre como a funcionalidade de CDC, consulte Change data capture
A operação de CDC no SQL Server requer valores correspondentes entre o servidor local (que tem server_id
= 0) em sys.servers
e os identificadores SERVERPROPERTY('ServerName')
. O RDS Custom para SQL Server mantém automaticamente essa sincronização durante o ciclo de vida da instância para garantir o funcionamento contínuo da CDC, mesmo que os hosts sejam substituídos durante as operações de manutenção ou recuperação.
Importante
Após o failover de uma instância multi-AZ, a função SERVERPROPERTY('Servername')
reflete automaticamente as alterações no nome da rede/computador. No entanto, a função @@SERVERNAME
mantém o nome antigo do servidor até que o serviço MSSQLSERVER
seja reiniciado. A consulta de @@SERVERNAME exibe o nome do servidor anterior após um failover. Para obter o nome exato do servidor após um failover, use a seguinte consulta SQL:
SELECT name FROM sys.servers WHERE server_id=0
Essa consulta fornece as informações de nome de servidor mais atualizadas sem exigir a reinicialização do serviço.
Disponibilidade de regiões e versões
A funcionalidade de CDC pode ser usada em todas as Regiões da AWS em que o RDS Custom para SQL Server está disponível, para todas as versões do SQL Server compatíveis com o RDS Custom. Para ter mais informações sobre versões compatíveis e disponibilidade de regiões do RDS Custom para SQL Server, consulte Regiões e mecanismos de banco de dados compatíveis com o RDS Custom para SQL Server.
Requisitos e limitações
Ao implementar a CDC no RDS Custom para SQL Server, esteja ciente destas considerações importantes:
-
Se você configurar manualmente
@@SERVERNAME
e/ou servidor local emsys.servers
para usar recursos como o MS Replication, se o valor do servidor local (que temserver_id = 0
) emsys.servers
estiver definido em um formato que corresponda a*.rds.amazonaws.com
ou*.awsrds.*.com
, o RDS Custom para SQL Server não tentará modificá-lo para corresponder aSERVERPROPERTY('ServerName')
. -
O RDS não pode modificar o servidor local (que tem
server_id = 0
) emsys.servers
para um novo nome de host enquanto logins remotos ou servidores vinculados estiverem usando ativamente o nome de host antigo. Essa limitação se aplica em dois cenários:-
Quando um servidor vinculado estabelece uma conexão com o servidor local usando um login remoto associado ao nome de host antigo
-
Quando uma instância do RDS Custom para SQL Server atua como publicador ou distribuidor e vincula logins associados ao nome de host antigo às instâncias do assinante.
-
Solução de problemas
Para identificar logins remotos ou logins vinculados associados ao nome antigo do servidor, use as consultas a seguir. Valide os resultados e remova esses logins para garantir que a CDC funcione adequadamente.
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