Captura de dados de alteração 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
Espelhamento de banco de dados
Replicação transacional
Restauração ou anexação de banco de dados
Controle de alterações
A captura de dados de alteração 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 Controle de alterações.
Espelhamento de banco de dados
Um banco de dados que é habilitado para captura de dados de alteração pode ser espelhado. Para assegurar que a captura e a limpeza ocorram automaticamente no espelho, siga estas etapas:
Verifique se o SQL Server Agent está sendo executado no espelho.
Crie os trabalhos de captura e de limpeza no espelho depois que a entidade fizer failover no espelho. Para criar os trabalhos, use o procedimento armazenado sys.sp_cdc_add_job (Transact-SQL).
Para obter mais informações sobre espelhamento de banco de dados, consulte Espelhamento de banco de dados.
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ção ocorre de modo diferente quando os dois recursos estão habilitados. A captura de dados de alteração e a replicação transacional sempre usam o mesmo procedimento, sp_replcmds, para ler alterações no log de transações. Quando a captura de dados de alteração é habilitada por iniciativa própria, um trabalho do SQL Server Agent chama sp_replcmds. Para obter mais informações, consulte Trabalho de captura. Quando os dois recursos estão habilitados no mesmo banco de dados, o Log Reader Agent chama sp_replcmds. Esse agente preenche as tabelas de alteração e do banco de dados de distribuição. Para obter mais informações, consulte Replication Log Reader Agent.
Considere um cenário em que a captura de dados de alteração está habilitada no banco de dados AdventureWorks e há duas tabelas habilitadas para captura. Para preencher as tabelas de alteração, o trabalho de captura chama sp_replcmds. O banco de dados está habilitado para replicação transacional, e é criada uma publicação. Agora, o Log Reader Agent é criado para o banco de dados, e o trabalho de captura é excluído. O Log Reader Agent continua a examinar o log do número de seqüência do último log confirmado na tabela de alteração. Isso assegura a consistência de dados nas tabelas de alteração. Se a replicação transacional estiver desabilitada nesse banco de dados, o Log Reader Agent será removido e o trabalho de captura, recriado.
Observação |
---|
Quando o Log Reader Agent for usado para captura de dados e replicação transacional, as alterações replicadas serão gravadas primeiro no banco de dados de distribuição. Em seguida, as alterações capturadas são gravadas nas tabelas de alteração. As duas operações são confirmadas ao mesmo tempo. Se houver uma latência na gravação no banco de dados de distribuição, haverá uma latência correspondente antes de as alterações aparecerem nas tabelas de alteração. |
Restaurando ou anexando um banco de dados habilitado para captura de dados de alteração
O SQL Server usa a seguinte lógica para determinar se a captura de dados de alteração deve permanecer habilitada depois que um banco de dados for 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 quando restaurar o banco de dados. Para obter mais informações sobre essa opção, consulte RESTORE.
Se um banco de dados for 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, pois a captura de dados de alteração exige o SQL Server Enterprise. A mensagem de erro 932 é 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.