Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

CDC on SQL Server

CDC = Change data capture
CDC is designed to capture insert, update, and delete activity applied to SQL Server tables, and to make the details of the changes available in an easily consumed relational format.

http://technet.microsoft.com/en-us/library/bb522489(v=sql.105).aspx

Check if cdc enabled:
USE [master]
GO
SELECT [name], database_id, is_cdc_enabled FROM sys.databases
GO

Enable cdc on DB:
USE [DB_NAME]
GO
EXEC sys.sp_cdc_enable_db
GO

after enable cdc:
  1. New schema cdc will be created
  2. New cdc system tables will be created

-- disable cdc:
EXEC sys.sp_cdc_disable_db 
GO

Check which tables of database have been enabled for cdc:
USE [DB_NAME]
GO
SELECT [name], is_tracked_by_cdc FROM sys.tables 
GO

Activate cdc on a table:
USE [DB_NAME]
GO
EXEC sys.sp_cdc_enable_table 
@source_schema = 'SCHEMA_NAME',
@source_name = 'TABLE_NAME',
@role_name = NULL,
@capture_instance = 'CDC_INSTANCE_NAME',
@supports_net_changes = 0,
@index_name = 'PK_OF_TABLE'
  • after enable cdc on a table, a new system table will be created: cdc.CDC_INSTANCE_NAME_CT

For example:
EXEC sys.sp_cdc_enable_table 
@source_schema = 'dbo',
@source_name = 'TableItai',
@role_name = NULL,
@capture_instance = 'dbo_TableItai',
@supports_net_changes = 0,
@index_name = 'PK_TableItai'
-- cdc.dbo_TableItai_CT will be created

Disable cdc on a table:
USE [DB_NAME]
GO
EXECUTE sys.sp_cdc_disable_table
    @source_schema = N'SCHEMA_NAME',
    @source_name = N'TABLE_NAME',
    @capture_instance = N'CDC_INSTANCE_NAME';
GO

https://www.simple-talk.com/sql/learn-sql-server/introduction-to-change-data-capture-%28cdc%29-in-sql-server-2008/

-- enable triggers ON DATABASE
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'DDL_Audit_Trigger')
ENABLE TRIGGER DDL_Audit_Trigger ON DATABASE
GO
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'TRD_AuditObjects')
ENABLE TRIGGER TRD_AuditObjects ON DATABASE
GO
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'trg_ProceduresSign')
ENABLE TRIGGER trg_ProceduresSign ON DATABASE

GO

-- disable triggers ON DATABASE
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'DDL_Audit_Trigger')
DISABLE TRIGGER DDL_Audit_Trigger ON DATABASE
GO
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'TRD_AuditObjects')
DISABLE TRIGGER TRD_AuditObjects ON DATABASE
GO
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'trg_ProceduresSign')
DISABLE TRIGGER trg_ProceduresSign ON DATABASE

GO

No comments:

Post a Comment