Habilitar captura de dados alterados (CDC)

Esta página descreve como habilitar a captura de dados alterados (CDC) no Cloud SQL para SQL Server. Este recurso está disponível para os bancos de dados das suas instâncias.

O CDC permite capturar diversos tipos de alterações. Para obter informações sobre como habilitar e desabilitar o CDC, consulte a documentação da Microsoft .

Depois de se conectar a uma instância, o usuário sqlserver pode executar muitas operações de CDC .

Veja também Trabalhar com dados de alteração .

Antes de começar

Antes de implementar o CDC em uma instância, revise todas as informações nesta página.

Confirmar disponibilidade do recurso

O CDC está disponível para as seguintes versões do banco de dados Cloud SQL para SQL Server:

  • SQL Server 2022 Standard
  • SQL Server 2022 Enterprise
  • SQL Server 2019 Padrão
  • SQL Server 2019 Enterprise
  • SQL Server 2017 Standard
  • SQL Server 2017 Enterprise

Habilitando o CDC e iniciando trabalhos de captura do CDC

Seu banco de dados tem os seguintes procedimentos armazenados, para uso pelo usuário sqlserver :

  • msdb.dbo.gcloudsql_cdc_enable_db
  • msdb.dbo.gcloudsql_cdc_disable_db

Ligue o CDC

Para ativar esse recurso em um banco de dados, execute o procedimento armazenado necessário e informe o nome do banco de dados. Por exemplo:

EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'

Desligue o CDC

Para desativar esse recurso em um banco de dados, execute um comando como o seguinte:

EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'

Iniciar trabalhos de captura do CDC

Após a ativação do CDC, os trabalhos são criados para captura e limpeza. Os trabalhos são invisíveis para o usuário sqlserver no SQL Server Management Studio (SSMS). No entanto, você pode modificar os trabalhos usando procedimentos armazenados integrados. Além disso, os trabalhos podem ser visualizados por meio do seguinte procedimento armazenado:

Para iniciar um trabalho de limpeza, você pode usar o seguinte comando:

EXEC sys.sp_cdc_start_job @job_type = N'cleanup'

Para alterar os parâmetros do trabalho, você 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 mudar de emprego, consulte o seguinte:

Veja também sys.sp_cdc_add_job .

Habilitando CDC para uma tabela

Depois de ativar o 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 obter informações sobre os comandos e opções padrão do CDC, consulte Habilitar e desabilitar a captura de dados alterados .

Acompanhar alterações em uma tabela

Para rastrear uma tabela, use o procedimento armazenado sys.sp_cdc_enable_table .

Por exemplo, você 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 o CDC está habilitado em uma tabela

Para verificar se o CDC está habilitado em uma tabela, use o procedimento armazenado sys.sp_cdc_help_change_data_capture .

Por exemplo, você 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 por meio de uma tabela de alterações do CDC

Para visualizar as alterações do CDC feitas em uma tabela, use uma consulta SELECT na tabela que é criada automaticamente quando o CDC é habilitado nessa tabela.

A tabela é nomeada da seguinte forma:

<schema>_<table_name>_CT

Por exemplo, você pode especificar um comando semelhante ao seguinte:

SELECT * FROM cdc.dbo_customer_CT

Habilitar 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, você 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 em uma instância de captura

Para visualizar as alterações do CDC feitas em uma tabela dentro de uma "instância de captura", use o procedimento armazenado cdc.fn_cdc_get_all_changes_<capture_instance> .

Por exemplo, você pode especificar uma instruçã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');

Desabilitando CDC para uma tabela

Para desabilitar o rastreamento de CDC para uma tabela, use o procedimento armazenado sys.sp_cdc_disable_table . Especifique uma instância de captura para desabilitá-lo. Como alternativa, especifique uma instância de captura como 'all' .

Por exemplo, você pode especificar um comando semelhante ao seguinte para desabilitar o CDC para a tabela:

EXEC sys.sp_cdc_disable_table
  @source_schema = N'dbo',
  @source_name = N'customer',
  @capture_instance = N'all'

Excluindo um banco de dados habilitado para CDC

Se o CDC estiver habilitado para um banco de dados e você tentar excluí-lo, poderá encontrar erros. Se isso ocorrer, desabilite o CDC para o banco de dados e, em seguida, exclua o banco de dados.

Por exemplo, você pode especificar um comando semelhante ao seguinte para desabilitar e excluir um banco de dados:

EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
DROP DATABASE 'DATABASE_NAME'

Se você não puder excluir o banco de dados porque ele tem conexões abertas, use a seguinte consulta para ver essas conexões:

select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'

Feche todas as conexões abertas. Desative o CDC para o banco de dados e, em seguida, exclua o banco de dados.

Importando um banco de dados habilitado para CDC

Ao importar um banco de dados habilitado para CDC, o Cloud SQL para SQL Server mantém o sinalizador KEEP_CDC habilitado e cria automaticamente trabalhos de captura e limpeza com parâmetros padrão.