Esta página descreve como ativar a captura de dados de alterações (CDC) no Cloud SQL para SQL Server. Esta funcionalidade está disponível para as bases de dados das suas instâncias.
A CDC permite-lhe captar muitos tipos de alterações. Para informações sobre como ativar e desativar a CDC, consulte a documentação da Microsoft.
Depois de estabelecer ligação a uma instância, o sqlserver
utilizador pode realizar muitas operações de CDC.
Veja também Trabalhe com dados de alterações.
Antes de começar
Antes de implementar a CDC numa instância, reveja todas as informações nesta página.
Confirme a disponibilidade das funcionalidades
A CDC está disponível para as seguintes versões de base de dados do Cloud SQL para SQL Server:
- SQL Server 2022 Standard
- SQL Server 2022 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
Ativar a CDC e iniciar tarefas de captura de CDC
A sua base de dados tem os seguintes procedimentos armazenados para utilização pelo utilizador sqlserver:
msdb.dbo.gcloudsql_cdc_enable_dbmsdb.dbo.gcloudsql_cdc_disable_db
Ative o CDC
Para ativar esta funcionalidade para uma base de dados, execute o procedimento armazenado necessário e transmita o nome da base de dados. Por exemplo:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
Desative o CDC
Para desativar esta funcionalidade para uma base de dados, execute um comando como o seguinte:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
Inicie tarefas de captura de CDC
Depois de a CDC ser ativada, são criadas tarefas para captura e limpeza. As tarefas são invisíveis para o utilizador do sqlserver no SQL Server Management Studio (SSMS).
No entanto, pode modificar as tarefas através de procedimentos armazenados incorporados. Além disso,
os trabalhos são visíveis através do seguinte procedimento armazenado:
Para iniciar uma tarefa de limpeza, pode usar o seguinte comando:
EXEC sys.sp_cdc_start_job @job_type = N'cleanup'
Para alterar os parâmetros da tarefa, pode usar um comando semelhante ao seguinte, por exemplo:
EXEC sys.sp_cdc_change_job @job_type = N'capture',
@maxtrans = 20,
@pollinginterval = NULL,
@maxscans = NULL,
@continuous = NULL
Para mais informações sobre como iniciar e alterar trabalhos, consulte o seguinte:
Veja também sys.sp_cdc_add_job.
Ativar a CDC para uma tabela
Depois de ativar a CDC para uma base de dados, qualquer utilizador com acesso dbo (proprietário da base de dados) pode configurar o acompanhamento de tabelas na base de dados.
Para obter informações sobre os comandos e as opções padrão de CDC, consulte o artigo Ative e desative a captura de dados de alterações.
Registe alterações numa tabela
Para monitorizar uma tabela, use o procedimento armazenado sys.sp_cdc_enable_table.
Por exemplo, pode especificar um comando semelhante ao seguinte:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'customer',
@role_name = N'CDC'
Verifique se a CDC está ativada numa tabela
Para verificar se a CDC está ativada numa tabela, use o
sys.sp_cdc_help_change_data_capture procedimento armazenado.
Por exemplo, pode especificar um comando semelhante ao seguinte:
EXECUTE sys.sp_cdc_help_change_data_capture
@source_schema = N'dbo',
@source_name = N'customer'
Consulte alterações através de uma tabela de alterações da CDC
Para ver as alterações da CDC feitas numa tabela, use uma consulta SELECT na tabela
que é criada automaticamente quando a CDC é ativada nessa tabela.
A tabela tem o seguinte nome:
<schema>_<table_name>_CT
Por exemplo, pode especificar um comando semelhante ao seguinte:
SELECT * FROM cdc.dbo_customer_CT
Ative a CDC numa tabela com uma instância de captura especificada
Para monitorizar uma tabela com uma "instância de captura", use o procedimento armazenado sys.sp_cdc_enable_table.
Por exemplo, pode especificar um comando semelhante ao seguinte:
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
Consultar todas as alterações numa instância de captura
Para ver as alterações de CDC feitas numa tabela numa "instância de captura", use o procedimento armazenado
cdc.fn_cdc_get_all_changes_<capture_instance>.
Por exemplo, pode especificar uma declaração SQL semelhante à seguinte:
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');
Desativar a CDC para uma tabela
Para desativar o acompanhamento de CDC para uma tabela, use o procedimento armazenado sys.sp_cdc_disable_table. Especifique uma instância de captura para a desativar. Em alternativa, especifique uma instância de captura como 'all'.
Por exemplo, pode especificar um comando semelhante ao seguinte para desativar a CDC para a tabela:
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'customer',
@capture_instance = N'all'
Eliminar uma base de dados ativada para CDC
Se a CDC estiver ativada para uma base de dados e tentar eliminá-la, pode encontrar erros. Se isto ocorrer, desative a CDC para a base de dados e, em seguida, elimine-a.
Por exemplo, pode especificar um comando semelhante ao seguinte para desativar e eliminar uma base de dados:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME' DROP DATABASE 'DATABASE_NAME'
Se não conseguir eliminar a base de dados porque tem ligações abertas, use a seguinte consulta para ver essas ligações:
select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'
Feche todas as ligações abertas. Desative a CDC para a base de dados e, de seguida, elimine a base de dados.
Importar uma base de dados ativada para CDC
Quando importa uma base de dados com CDC ativado, o Cloud SQL para SQL Server mantém a flag KEEP_CDC ativada e cria automaticamente tarefas de captura e limpeza com parâmetros predefinidos.