Compartilhar via


Alterar a captura de dados e outros recursos do SQL Server

Este tópico descreve como os seguintes recursos interagem com a captura de dados de alteração:

Controle de Alterações

A captura de dados de alterações e o controle de alterações podem ser habilitados no mesmo banco de dados. Nenhuma consideração especial é necessária. Para obter mais informações, consulte Work with Change Tracking (SQL Server).

Espelhamento de Banco de Dados

Um banco de dados habilitado para captura de dados de alteração pode ser espelhado. Para garantir que a captura e a limpeza ocorram automaticamente após um failover, siga estas etapas:

  1. Verifique se o SQL Server Agent está em execução na nova instância do servidor principal.

  2. Crie o trabalho de captura e o trabalho de limpeza no novo banco de dados principal (o antigo banco de dados espelho). Para criar os jobs, use o procedimento armazenado sp_cdc_add_job.

Para exibir a configuração atual de um trabalho de limpeza ou captura, use o procedimento armazenado sys.sp_cdc_help_jobs na nova instância do servidor principal. Para um determinado banco de dados, o trabalho de captura é chamado cdc.database_name_capture, e o trabalho de limpeza é chamado cdc.database_name_cleanup, onde database_name é o nome do banco de dados.

Para alterar a configuração de um trabalho, use o procedimento armazenado sys.sp_cdc_change_job .

Para obter informações sobre espelhamento de banco de dados, consulte Espelhamento de Banco de Dados (SQL Server).

Replicação transacional

A captura de dados de alteração e a replicação transacional podem coexistir no mesmo banco de dados, mas a população das tabelas de alterações é tratada de forma diferente quando ambos os recursos são habilitados. A captura de dados de alteração e a replicação transacional sempre usam o mesmo procedimento, sp_replcmds, para ler as alterações do log de transações. Quando a captura de dados de alteração é habilitada por conta própria, um trabalho do SQL Server Agent chama sp_replcmds. Quando os dois recursos estão ativados no mesmo banco de dados, o agente leitor de logs chama sp_replcmds. Esse agente preenche as tabelas de alteração e as tabelas de banco de dados de distribuição. Para obter mais informações, consulte Replication Log Reader Agent.

Considere um cenário no qual a captura de dados de alteração está habilitada no banco de dados AdventureWorks2012 e duas tabelas estão habilitadas para captura. Para preencher as tabelas de alterações, o trabalho de captura chama sp_replcmds. O banco de dados está habilitado para replicação transacional e uma publicação é criada. O agente de leitura de log é criado para o banco de dados e a tarefa de captura é excluída. O Agente de Leitor de Log continua verificando o log do último número de sequência de log que foi confirmado na tabela de alterações. Isso garante a consistência dos dados nas tabelas de alterações. Se a replicação transacional estiver desabilitada neste banco de dados, o Agente de Leitor de Log será removido e o trabalho de captura será recriado.

Observação

Quando o Agente de Leitor de Log é usado para a captura de dados de alteração e a replicação transacional, as alterações replicadas são gravadas primeiro no banco de dados de distribuição. Em seguida, as alterações capturadas são gravadas nas tabelas de alteração. Ambas as operações são cometidas em conjunto. Se houver alguma latência na gravação no banco de dados de distribuição, haverá uma latência correspondente antes que as alterações apareçam nas tabelas de alterações.

A opção proc exec de replicação transacional não está disponível quando a captura de dados de alteração está habilitada.

Restaurando ou anexando um banco de dados habilitado para a captura de dados de alteração

O SQL Server usa a seguinte lógica para determinar se a captura de dados de alteração permanece habilitada depois que um banco de dados é restaurado ou anexado:

  • Se um banco de dados for restaurado para o mesmo servidor com o mesmo nome de banco de dados, a captura de dados de alteração permanecerá habilitada.

  • Se um banco de dados for restaurado para outro servidor, por padrão, a captura de dados de alteração será desabilitada e todos os metadados relacionados serão excluídos.

    Para manter a captura de dados de alteração, use a opção KEEP_CDC ao restaurar o banco de dados. Para obter mais informações sobre essa opção, consulte RESTORE.

  • Se um banco de dados estiver desanexado e anexado ao mesmo servidor ou a outro servidor, a captura de dados de alteração permanecerá habilitada.

  • Se um banco de dados for anexado ou restaurado com a opção KEEP_CDC para qualquer edição diferente da Enterprise, a operação será bloqueada porque a captura de dados de alteração exigirá o SQL Server Enterprise. A mensagem de erro 934 é exibida:

    SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.

Você pode usar sys.sp_cdc_disable_db para remover a captura de dados de alteração de um banco de dados restaurado ou anexado.

Captura de Dados e AlwaysON

Quando você usa AlwaysON, a enumeração de alteração deve ser feita na replicação secundária para reduzir a carga de disco no primário.

Consulte Também

Administrar e monitorar a captura de dados de alteração (SQL Server)