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 se ligar 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_db
msdb.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 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'
Consultar 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.