Nesta página, explicamos como ativar a captura de dados alterados (CDC, na sigla em inglês) no Cloud SQL para o SQL Server. Este recurso está disponível para os bancos de dados de suas instâncias.
A CDC permite capturar vários tipos de alterações. Para informações sobre como ativar e desativar a CDC, consulte a documentação da Microsoft.
Depois de se conectar a uma
instância, o usuário
sqlserver
pode fazer várias
operações de CDC.
Consulte também Trabalhar com dados de alteração.
Antes de começar
Antes de implementar a CDC em uma instância, revise todas as informações nesta página.
Confirme a disponibilidade do recurso
A CDC está disponível para as seguintes versões de banco de dados do Cloud SQL para o 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
Como ativar a CDC e iniciar jobs de captura
Seu banco de dados tem os seguintes procedimentos armazenados, para uso do usuário
sqlserver
:
msdb.dbo.gcloudsql_cdc_enable_db
msdb.dbo.gcloudsql_cdc_disable_db
Ative a CDC
Para ativar esse recurso em um banco de dados, execute o procedimento armazenado necessário e transmita o nome dele. Exemplo:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
Desative a CDC
Para desativar esse recurso em um banco de dados, execute um comando como este:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
Inicie jobs de captura de CDC
Depois que a CDC é ativada, jobs são criados para captura e limpeza. Os jobs não são
visíveis para o usuário sqlserver
no SQL Server Management Studio (SSMS).
No entanto, é possível modificar os jobs usando procedimentos armazenados incorporados. Além disso,
é possível visualizar os jobs pelo procedimento armazenado a seguir:
Para iniciar um job de limpeza, use o seguinte comando:
EXEC sys.sp_cdc_start_job @job_type = N'cleanup'
Para alterar os parâmetros do job, use 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 jobs, consulte:
Consulte também sys.sp_cdc_add_job
.
Como ativar a CDC em uma tabela
Depois de ativar a CDC para um banco de dados, qualquer usuário com acesso dbo (proprietário do banco de dados) pode configurar o rastreamento de tabelas no banco de dados.
Para mais informações sobre os comandos e opções padrão da CDC, consulte Ativar e desativar a captura de dados de alterações.
Rastreie as alterações em uma tabela
Para rastrear uma tabela, use o procedimento armazenado sys.sp_cdc_enable_table
.
Por exemplo, é possível 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 em uma tabela
Para verificar se a CDC está ativada em uma tabela, use o
procedimento armazenado sys.sp_cdc_help_change_data_capture
.
Por exemplo, é possível 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 utilizando uma tabela de alterações de CDC
Para visualizar alterações de CDC feitas em uma tabela, use uma consulta SELECT
na tabela
que é criada automaticamente quando a CDC está ativada.
A tabela é nomeada da seguinte maneira:
<schema>_<table_name>_CT
Por exemplo, é possível especificar um comando semelhante ao seguinte:
SELECT * FROM cdc.dbo_customer_CT
Ative a CDC em uma tabela com uma instância de captura especificada
Para rastrear uma tabela com uma "instância de captura", use o procedimento armazenado
sys.sp_cdc_enable_table
.
Por exemplo, é possível 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
Consulte todas as alterações em uma instância de captura
Para visualizar as alterações de CDC feitas em uma tabela em uma instância de captura, use o
procedimento armazenado cdc.fn_cdc_get_all_changes_<capture_instance>
.
Por exemplo, é possível especificar uma instrução SQL semelhante a esta:
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');
Como desativar a CDC de uma tabela
Para desativar o rastreamento de CDC de uma tabela, use o procedimento armazenado
sys.sp_cdc_disable_table
. Especifique uma instância de captura para desativá-la. Se preferir, especifique uma
instância de captura como 'all'
.
Por exemplo, é possível especificar um comando semelhante ao seguinte para desativar a CDC da tabela:
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'customer',
@capture_instance = N'all'
Como excluir um banco de dados ativado para CDC
Se o CDC estiver ativado para um banco de dados e você tentar excluí-lo, poderá encontrar erros. Se isso ocorrer, desative o CDC do banco de dados e exclua o banco de dados.
Por exemplo, especifique um comando semelhante ao seguinte para desativar e excluir um banco de dados:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME' DROP DATABASE 'DATABASE_NAME'
Se não for possível excluir o banco de dados porque ele tem conexões abertas, use a seguinte consulta para vê-las:
select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'
Feche todas as conexões abertas. Desativar o CDC para o banco de dados e, em seguida, excluí-lo.
Como importar um banco de dados ativado pela CDC
Ao importar um banco de dados ativado pela CDC, o Cloud SQL para SQL Server mantém a sinalização KEEP_CDC ativada e cria automaticamente jobs de captura e limpeza com parâmetros padrão.