O proximo passo é configurar as tabelas que irão ser monitoradas. Como acabamos de criar esse banco ele só possui tabelas de sistema como nos mostrar o script abaixo:
Vamos criar algumas tabelas pra podemos ativas o recurso.
CREATE TABLE TESTE1
(
ID INT NOT NULL PRIMARY KEY,
TESTE1 VARCHAR(50)
)
GO
CREATE TABLE TESTE2
(
ID INT NOT NULL PRIMARY KEY,
TESTE2 VARCHAR(50)
)
Após a criação vamos executar novamente o script e observar como o valor do campo “is_tracked_by_cdc” é por padrão criado com o valor zerado.
Antes de ativamos o CDC a nivel de tabela é preciso verificarmos primeiro se o “SQL SERVER AGENT” esta habilitado. Isso é necessario por que quando se habilita o recurso de CDC a nivel de tabela é criado dois Jobs.
Agora vamos ativar o CDC para as duas tabelas criadas. Para habilitar o CDC nas tabelas criadas vamos utilizar um procedure “sp_cdc_enable_table”. Veja como podemos usar essa procedure:
Vamos entender o que aconteceu na figura abaixo. Quando ativamos a primeira tabela do banco de dados com o CDC ele cria dois jobs. O job “cdc.BICDC_capture” é responsavel por logar tudo que ocorrer na tabela origem para a tabela que ele criou, isso inclui: Insert, update, delete. Já o job “cdc.BICDC_cleanup” é responsavel por apagar os registros logados na tabela que ele criou depois de um periodo, configuravel, de tempo. Quando execultamos essa procedure ela tambem cria a tabela de log que é criada com o schema cdc mais o schema da tabela mais a o nome e no final da tabela “_CT”. Essa tabela tera todos os campos da tabela original mais alguns campos de controle do CDC. Essa procedure tambem cria procedures e funções. Observe a figura:
Para consultar as tabelas que estão com o recurso CDC ativado basta executar o script abaixo e verificar que o valor do campo “is_tracked_by_cdc” é: 1.
Vamos ver na prática agora como as infomações são guardadas. Vamos fazer um insert, update e delete na tabela TESTE1.
Observe que os registros aparecem conforme foi inserido. Mais o que é importante observar é a coluna "__$operation" que esta com o valor 2 que representa o insert. Observe no caso do update como fica os registros.
No caso do update é um pouco diferente. Ele gera dois registro com o codigo 3,4 na coluna "__$operation". Sempre que fizer uma alteração o CDC grava o registro ante de ser alterado,codigo = 3, e o valor alterado que é representado pelo codigo 4 na coluna "__$operation". Já no caso do caso de deletar um registro o CDC cria apenas uma linha com o "__$operation" = 1 conforme a figura abaixo:
É isso ai pessoal, no próximo artigo vou mostrar como usar o SSIS para Carregar as informações armazenadas nas tabelas que estão sendo monitoradas.
Parabéns pelo post. Ficou excelente.
ResponderExcluir