留意:
sqlserver的cdc功能用于获取数据库中数据的变更,开启的话会有一定的资源消耗,尤其是生产体系下一定要先评估其影响,需要cdc功能共同数仓项目使用前一定要开启数据库的SQL代理。
详细步调:
1、开启具体数据库实例的CDC
- USE databaname;
- GO
- EXEC sys.sp_cdc_enable_db;
复制代码 2、查询数据库的CDC是否精确开启
- select * from sys.databases where is_cdc_enabled = 1;
复制代码 如果数据库的CDC被精确开启,运行SQL后会返回下列效果
3、添加CDC功能需要的文件组和文件(必要)
留意:这是必要的,创建单独的文件组和文件后会防止其在运行过程中与数据库的主资源争夺
查询现有的文件的位置,直接在此目次下创建即可
- SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('databasename');
复制代码- --添加文件组
- ALTER DATABASE databasename ADD FILEGROUP CDC2;
- --添加文件
- ALTER DATABASE databasename
- ADD FILE
- (
- NAME= 'CDC',
-
- FILENAME = 'F:\CDC.ndf',
-
- SIZE = 100MB
- )
- TO FILEGROUP CDC2;
复制代码 上述代码中,databasename是对应数据库的名称,CDC2是文件组的名称可以自界说,括号中NAME文件名的名称可以自界说,FILENAME是文件位置,以上面查询的文件的位置一致即可;上述文件组与文件创建成功后,可以再次使用查询文件位置下令,会看到返回效果中有新建的文件(需要权限够高)
4、开启具体表的CDC
- EXEC sys.sp_cdc_enable_table
- @source_schema = '表结构',
- @source_name = '表名称',
- @role_name = NULL,
- @supports_net_changes = 1,
- @index_name = NULL,
- @captured_column_list = NULL,
- @filegroup_name = '上述创建文件的名称';
复制代码 5、验证表的CDC开启
方法一:查询全部开启CDC功能的表(会返回表名和状态:状态为1体现开启CDC功能)
- SELECT name,is_tracked_by_cdc FROM sys.tables WHERE is_tracked_by_cdc = '1';
复制代码 方法二:查询单个表是否开启CDC(返回状态,状态为1体现成功开启CDC功能)
- SELECT is_tracked_by_cdc FROM sys.tables WHERE name='表名';
复制代码 6、关闭表CDC和数据库CDC
也可以直接关掉数据库CDC,对应的表CDC也会关掉
- --关闭表CDC
- EXEC sys.sp_cdc_disable_table @source_schema = '表结构', @source_name = '表名', @capture_instance = 'all';
- --关闭数据库CDC
- EXEC sys.sp_cdc_disable_db;
复制代码 上述步调为自己总结,如发现题目及时留言,大家一起进步!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |