帮你快速理解、总结文档立即下载

SQL Server 数据源

最近更新时间:2026-09-11 20:42:30
我的收藏

概述

SQL Server 是 Microsoft 推出的关系型数据库管理系统,广泛应用于企业级应用与数据管理。DataBuddy 数据接入支持将 SQL Server 作为来源端,覆盖离线同步、实时整库同步与分库分表同步等场景。本文介绍其连接配置、能力支持范围、前提条件与常见问题。

支持的版本

类型
支持版本
自建 SQL Server
2012 / 2014 / 2016 / 2017 / 2019 / 2022
云数据库 SQL Server
2012 / 2014 / 2016 / 2017 / 2019 / 2022
JDBC Driver
mssql-jdbc-7.4.1.jre8

读取能力

能力
离线读
实时整库读
分库分表读
支持
完整数据源能力对照参见 支持的数据源与读取能力

使用限制

实时同步限制

限制项
说明
CDC 功能
需要在数据库与表上启用 CDC(Change Data Capture)
日志保留时间
CDC 日志至少保留 72 小时
无主键表
无主键表无法保证 exactly-once 语义
版本要求
CDC 仅在 Enterprise / Developer / Standard 版本可用
锁争用
建议开启快照隔离避免锁争用

离线同步限制

限制项
说明
视图
支持读取视图
切割键
仅支持整型字段

支持的字段类型

完整字段类型请参见 SQL Server 官方文档
字段类型
离线读
实时读
BIT / TINYINT / SMALLINT / INT / INTEGER / BIGINT
FLOAT / REAL / DECIMAL / NUMERIC / MONEY / SMALLMONEY
CHAR / NCHAR / VARCHAR / NVARCHAR / TEXT / NTEXT / XML
DATE / TIME / DATETIME / DATETIME2 / SMALLDATETIME / DATETIMEOFFSET
BINARY / VARBINARY / IMAGE / UNIQUEIDENTIFIER
GEOGRAPHY / GEOMETRY / HIERARCHYID / SQL_VARIANT

实时同步支持的 DML / DDL

DML

操作
是否支持
INSERT / DELETE / UPDATE

DDL

操作
是否支持
新增列 / 删除列 / 重命名列 / 修改列类型
新增表 / 重命名表 / 删除表 / 清空表
SQL Server 基于 CDC 机制进行变更捕获,不支持 DDL 变更的自动同步。Schema 变更后需要重新启用 CDC,并可能需要重新配置同步任务。建议在业务低峰期进行 Schema 变更。

前提条件

1. 配置账号权限

离线同步
CREATE LOGIN wedata_user WITH PASSWORD = 'your_password';
USE your_database;
CREATE USER wedata_user FOR LOGIN wedata_user;
GRANT SELECT ON SCHEMA::dbo TO wedata_user;
实时同步
CREATE LOGIN wedata_cdc_user WITH PASSWORD = 'your_password';
USE your_database;
CREATE USER wedata_cdc_user FOR LOGIN wedata_cdc_user;
GRANT SELECT ON SCHEMA::dbo TO wedata_cdc_user;
GRANT SELECT ON SCHEMA::cdc TO wedata_cdc_user;
ALTER ROLE db_datareader ADD MEMBER wedata_cdc_user;

2. 开启数据库与表 CDC(仅实时同步)

USE your_database;
EXEC sys.sp_cdc_enable_db;

EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'your_table',
@role_name = NULL,
@supports_net_changes = 1;

3. 确保 SQL Server Agent 服务正在运行

CDC 依赖 SQL Server Agent Job 来捕获变更:
EXEC sys.sp_cdc_help_jobs;

4. 开启快照隔离(推荐)

ALTER DATABASE your_database SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE your_database SET READ_COMMITTED_SNAPSHOT ON;

创建数据源

操作步骤

1. 登录 DataBuddy 控制台
2. 在顶部切换到目标地域和 Workspace。
3. 进入 数据接入 > 任务管理 > 数据源管理 (或 平台管理 > 数据源管理 )。
4. 点击 添加数据源 ,选择 SQL Server
5. 填写连接配置与认证信息,详见 参数说明
6. 点击 测试连接 (参见 数据源连通性测试)。
7. 测试通过后点击 保存保存 & 创建任务

参数说明

参数
说明
是否必填
数据源名称
数据源在工作空间内的唯一标识
JDBC URL
jdbc:sqlserver://host:port;DatabaseName=database
用户名
数据库连接账号
密码
数据库连接密码(支持 SSM 凭证托管)
数据源版本
JDBC URL 示例:
jdbc:sqlserver://10.0.0.1:1433;databaseName=mydb
jdbc:sqlserver://10.0.0.1:1433;databaseName=mydb;encrypt=true;trustServerCertificate=true
常用 URL 参数:
参数
说明
databaseName
数据库名称
encrypt / trustServerCertificate
加密连接相关
loginTimeout
登录超时时间(秒)

在数据接入任务中使用

实时整库

配置项
说明
来源表范围
指定表 (仅同步选中的表,新增表需重启)/ 正则匹配 (指定库名 + 表名正则,符合规则的新增表自动接入)
读取模式
全量 + 增量 / 仅增量

离线单表

参数
说明
库 / Schema / 表
必填,Schema 默认 dbo
切割键
仅支持整型字段
筛选条件
标准 WHERE 语法

最佳实践

账号权限最小化 :使用专用账号,避免 sa
CDC 日志保留 :建议至少 72 小时:
EXEC sys.sp_cdc_change_job
@job_type = 'cleanup',
@retention = 4320; -- 单位:分钟(72 小时)
切割键选择 :主键或索引列。
网络打通 :优先使用内网连接。

常见问题

Q:报错 CDC 未启用或找不到 CDC 表?

A:在数据库与表上启用 CDC:
USE your_database;
EXEC sys.sp_cdc_enable_db;
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'your_table',
@role_name = NULL;

Q:CDC 变更未被捕获?

A:SQL Server Agent 服务未启动。请启动 Agent 服务,并通过 EXEC sys.sp_cdc_help_jobs; 检查 CDC 作业状态。

Q:报错找不到 CDC 变更数据?

A:CDC 日志保留时间太短,已被清理。请增加 CDC 保留时间(见 最佳实践)。

Q:连接超时或被拒绝?

A:检查网络连通性、确认 SQL Server 允许远程连接、检查防火墙端口(默认 1433)。

Q:同步过程中出现锁等待或死锁?

A:未开启快照隔离:
ALTER DATABASE your_database SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE your_database SET READ_COMMITTED_SNAPSHOT ON;

相关文档