• SQL Server中的变更捕获技术--简单部署


    ------准备------

    CREATE DATABASE db_test_cdc
    
    CREATE TABLE t1(id INT IDENTITY(1,1) ,name VARCHAR(50));
    
    INSERT INTO t1(name)VALUES('test')

    ------开始------

    --启用数据库变更捕获

    使用变更捕获首先需要启用数据库变更捕获,执行如下存储过程,启用变更捕获

    USE db_test_cdc
    
    EXEC sys.sp_cdc_enable_db
    GO

    启用完以后SQL SERVER会自动创建一系列有关变更捕获的讯息,如下:

    --启用表变更捕获

    启用变更捕获以后,就可以针对表开启捕获,执行如下SQL

    EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo', --表架构名字
    @source_name   = N't1', --表名字
    @role_name     = N'cdec_role' --可以查询该表的角色,如果有则不创建,如果没有则创建

    成功启用了该表以后,SQL Server会创建该表的数据捕获表:

    当第一次启用表的时候,会创建两个代理作业,所以如果使用变更捕获,则需要启用代理,以下是第一次启用表变更产生的代理:

    cdc.db_test_cdc_capture:是用于将变更的数据同步到我们启用的变更表中,即:cdc.dbo_t1_CT这个表

    cdc.db_test_cdc_cleanup:适用于定时清理cdc.dbo_t1_CT这个表这个表中的数据

    我们在t1表插入一条数据,进行测试。

    INSERT INTO t1(name)VALUES('test1');

    这个表则会记录一条数据

    其中$operation这个字段表示新增的这行是怎么来的,值分别有下面这几种:

    1:删除

    2:增加

    3:修改前数据

    4:修改后数据

    --禁用表变更捕获

    USE db_test_cdc
    GO
    
    EXEC sys.sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name   = N't1',
    @capture_instance = N'dbo_t1'
    GO

     执行禁用表变更以后,其相应的表会被删除掉 如下:

     --禁用数据库变更

    USE db_test_cdc
    GO
    
    EXEC sys.sp_cdc_disable_db

    禁用数据库表变更以后,所有有关变更捕获的讯息,均被清空;

    -------结束---------

    以上是有关变更捕获的简单部署,后续会继续更新有关变更捕获更详细的资料

  • 相关阅读:
    完整的开源和商业软件平台
    免费开源的文件比较/合并工具
    Javascript面向对象基础
    Javascript面向对象基础
    引入外部js获取dom为null的问题
    闭包函数
    初识对象
    构造函数
    内置对象
    Math对象
  • 原文地址:https://www.cnblogs.com/blog-east/p/6985355.html
Copyright © 2020-2023  润新知