类型 | 版本 |
SQL Server | 2008、2008R2、2012、2014、2016、2017、2019 |
if exists(select 1 from sys.databases where name='mydatabase' and is_cdc_enabled=0)beginexec sys.sp_cdc_enable_dbend
select is_cdc_enabled from sys.databases where name='mydatabase'
IF EXISTS(SELECT 1 FROM sys.tables WHERE name='mytable' AND is_tracked_by_cdc = 0)BEGINEXEC sys.sp_cdc_enable_table@source_schema = 'dbo', -- source_schema@source_name = 'mytable', -- table_name@capture_instance = NULL, -- capture_instance@role_name = NULL, -- role_name 指定一个角色,您可以向该角色添加要授予对源表的捕获列的 SELECT 权限的用户。sysadmin 或 db_owner 角色中的用户也可以访问指定的更改表。将 @role_name 的值设置为 NULL,以仅允许 sysadmin 或 db_owner 中的成员对捕获的信息具有完全访问权限。@supports_net_changes = 0END
SELECT is_tracked_by_cdc FROM sys.tables WHERE name='mytable'
EXEC sys.sp_cdc_disable_table@source_schema = N'dbo',@source_name = 'mytable',@capture_instance ='all'
IF EXISTS(SELECT 1 FROM sys.tables WHERE name='mytable' AND is_tracked_by_cdc = 0)BEGINEXEC sys.sp_cdc_enable_table@source_schema = 'dbo', -- source_schema@source_name = 'mytable', -- table_name@capture_instance = NULL, -- capture_instance@role_name = NULL, -- role_name 指定一个角色,您可以向该角色添加要授予对源表的捕获列的 SELECT 权限的用户。sysadmin 或 db_owner 角色中的用户也可以访问指定的更改表。将 @role_name 的值设置为 NULL,以仅允许 sysadmin 或 db_owner 中的成员对捕获的信息具有完全访问权限。@supports_net_changes = 0END
参数 | 说明 |
数据源 | 选择需要同步的 SQL Server 数据源。 |
来源表 | SQL Server 只支持指定表和指定库,不支持所有库表 指定表:此选项下需指定到具体表名称,设置后任务仅同步指定表,只能选择一个库下的表,不支持跨库选择;若需要新增同步表需暂停并重启任务。 指定库:此选项下需指定具体库名、表名正则表达式。其中库名必须要相同,不支持多个数据库。设置后,任务运行期间符合表名表达式的新增表默认将同步至目标端。 |
读取模式 | 全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。 增量:仅从任务启动后的 binlog cdc 位点开始同步数据。 |
一致性语义 | 仅代表读取端的一致性语义。支持 At-least-once 和 Exactly-once。 At-least-once:数据可能存在重复读取,依赖目标端支持去重来保证数据的一致性。适用于全量阶段数据量大且使用非数值型主键、对同步性能要求高的场景。 Exactly-once:数据严格只读取一次,性能上有一定损失,不支持无主键且无唯一索引列的表。适用于源表有数值型主键或唯一索引列的通用场景。 当前版本两种模式状态不兼容,任务提交后如果修改模式,不支持带状态重启。 |
高级设置(可选) | 可根据业务需求配置参数。 |
参数 | 描述 |
数据来源 | 选择 SQL Server 数据源。 |
库 | 支持选择或者手动输入需读取的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
表 | 支持选择或者手动输入需读取的表名称。 分表情况下,可在 SQL Server 源端支持选择或输入多个表名称,多个表需保证结构一致。 分表情况下,支持配置表序号区间。例如 'table_[0-99]' 表示读取 'table_0'、'table_1'、'table_2' 直到 'table_99' ; 如果您的表数字后缀的长度一致,例如 'table_000'、'table_001'、'table_002' 直到 'table_999',您可以配置为 '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]' 。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
添加分库分表 | 适用于分库场景,点击后可配置多个数据源、库及表信息。分库分表场景下需保证所有表结构一致,任务配置将默认展示并使用第一个表结构进行数据获取。 |
读取模式 | 全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。 仅增量:仅从任务启动后的 binlog cdc 位点开始同步数据。 |
过滤操作 | 设置后将不同步指定操作类型的数据,支持过滤插入、更新和删除操作。 |
时区 | 设置日志时间所属时区,默认上海。 |
参数(选填) | 可根据业务需求配置参数。 |
参数 | 说明 |
数据源 | 需要写入的 SQL Server 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
Schema | 支持选择、或者手动输入需要写入的 SQL Server 模式。 |
表 | 支持选择、或者手动输入需写入的表名称。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
主键 | 选择一个字段作为写入表的主键。 |
高级设置(选填) | 可根据业务需求配置参数。 |
参数 | 说明 |
数据去向 | 选择当前项目中可用的 SQL Server 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
schema | 支持选择、或者手动输入需读取的 schema 名称。 |
表 | 支持选择、或者手动输入需写入的表名称。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
主键 | 选择一个字段作为数据表主键 |
高级设置(可选) | 可根据业务需求配置参数。 |
SQLServer 类型 | 内部类型 |
char(n) | CHAR(n) |
varchar(n),nvarchar(n),nchar(n) | VARCHAR(n) |
text,ntext,xml | STRING |
decimal(p, s),money,smallmoney | DECIMAL(p, s) |
numeric | NUMERIC |
REAL,FLOAT | FLOAT |
bit | BOOLEAN |
int | INT |
tinyint | TINYINT |
smallint | SMALLINT |
time (n) | TIME (n) |
bigint | BIGINT |
date | DATE |
datetime2,datetime,smalldatetime | TIMESTAMP(n) |
datetimeoffset | TIMESTAMP_LTZ(3) |
内部类型 | SQLServer 类型 |
CHAR(n) | char(n) |
VARCHAR(n) | varchar(n),nvarchar(n),nchar(n) |
STRING | text,ntext,xml |
BIGINT | BIGINT,BIGSERIAL |
DECIMAL(p, s) | decimal(p, s),money,smallmoney |
NUMERIC | numeric |
FLOAT | float,real |
BOOLEAN | bit |
INT | int |
TINYINT | tinyint |
SMALLINT | smallint |
BIGINT | bigint |
TIME(n) | time(n) |
TIMESTAMP(n) | datetime2,datetime,smalldatetime |
TIMESTAMP_LTZ(3) | datetimeoffset |
本页内容是否解决了您的问题?