Giter Site home page Giter Site logo

poc.sqlserver.cdc's Introduction

Poc SqlServer CDC (Change Data Capture)

Exemplo de uso de SqlServer com Change Data Capture (CDC) habilitado.

Basicamente o CDC é um serviço que grava todo o histórico de alterações de uma tabela em outra tabela de forma transparente para a aplicação.

Para mais informações sobre o CDC: https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/about-change-data-capture-sql-server?view=sql-server-ver16

Docker Compose

Arquivo em \dockercompose\sql-server-compose.yml.

services:
  sqlserver_local:
    image: mcr.microsoft.com/mssql/server:2019-latest
    environment:
      SA_PASSWORD: "SqlServer2019!"
      ACCEPT_EULA: "Y"
      MSSQL_PID: "Developer"
      MSSQL_AGENT_ENABLED: "True"
    ports:
      - "1433:1433"

Importante: O container deve subir com a variável MSSQL_AGENT_ENABLED: "True", pois é o Agent do SqlServer que faz o trabalho de inserir as alterações nas tabelas do CDC.

Criação de Destruição do Container

Para criar o container SqlServer com o CDC habilitado, basta executar no PowerShell:

.\create-sql-server.ps1

Para destruir o container, basta executar no PowerShell:

.\destroy-sql-server.ps1

Habilitando o CDC

Arquivo em \scripts\testes-cdc.sql.

-- Cria um database de teste
CREATE DATABASE TESTE_CDC
GO
USE TESTE_CDC
GO

-- Cria tabela de exemplo
CREATE TABLE dbo.Cliente(id INT IDENTITY PRIMARY KEY, nome VARCHAR(100))
GO

-- Habilita o CDC no database
EXEC sys.sp_cdc_enable_db
GO

-- Habilita o CDC na tabela Cliente
EXEC sys.sp_cdc_enable_table  
@source_schema = N'dbo',  
@source_name   = N'Cliente',  
@role_name     = NULL,  
@filegroup_name = NULL,
@supports_net_changes = 0
GO

-- Checa se Datatbase e Tabela estãocom CDC habilitados
select is_cdc_enabled, * from SYS.databases
select is_tracked_by_cdc, * from sys.tables

-- Insere dados e modifica
insert into Cliente values ('Clienbte 1')
update Cliente set nome = 'Cliente 1 Alterado' where id = 1

-- Consulta na tabela CDC criada automaticamente para armazenar as alterações feitas na tabela Cliente
select * from cdc.dbo_Cliente_CT where id = 1

OBS.: Ao habilitar o CDC para uma tabela, o SqlServer gera uma tabela "clone" em cdc.dbo_NOME-DA-TABELA_CT. Exemplo:

Tabela: dbo.Cliente
Tabela histórico: cdc.dbo_Cliente_CT.

poc.sqlserver.cdc's People

Contributors

neon-rodolfo-souza avatar rodolfo-souza avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.