You need to enable JavaScript to run this app.
文档中心
大数据研发治理套件

大数据研发治理套件

复制全文
下载 pdf
SQLServer
配置 SQLServer 数据源
复制全文
下载 pdf
配置 SQLServer 数据源

SQLServer 数据源为您提供读取和写入 SQLServer 的双向通道数据集成能力,实现不同数据源与 SQLServer 之间进行数据传输。本文为您介绍 DataSail 的 SQLServer 数据同步的能力支持情况。

1 支持的 SQLServer 版本

SQL Server 离线读写使用驱动版本是 com.microsoft.sqlserver:mssql-jdbc:7.2.2.jre8,驱动能力请参见官网文档。该驱动支持的SQL Server版本如下所示:

版本

离线通道支持性

实时整库同步支持性

备注

SQL Server 2022

✅ 是

✅ 是

推荐版本

SQL Server 2019

✅ 是

✅ 是

推荐版本

SQL Server 2017

✅ 是

✅ 是

SQL Server 2016

✅ 是

✅ 是(仅限 SP1 及以上)

需确认已安装 Service Pack 1

SQL Server 2014

✅ 是

❌ 否

不支持实时增量同步

SQL Server 2012

✅ 是

❌ 否

不支持实时增量同步

SQL Server 2008 R2

✅ 是

❌ 否

仅支持离线全量读写

SQL Server 2008

✅ 是

❌ 否

仅支持离线全量读写

PDW 2008R2 AU34

✅ 是

❌ 否

并行数据仓库版本

Azure SQL Database

✅ 是

❌ 否

云数据库版本

您可以在数据库中执行以下语句,查看 SQL Server 数据库的版本:

SELECT @@VERSION;

2 使用前提

2.1 账号与权限

子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员。

  • 建议创建专用同步账号
    创建用户 SQL 示例如下:

    -- 创建 DataSail 专用同步登录账号
    CREATE LOGIN datasail_login WITH PASSWORD = 'YourStrongP@ssw0rd';
    
    -- 在目标数据库中创建用户并关联登录
    USE [your_database];
    CREATE USER datasail_user FOR LOGIN datasail_login;
    
  • 离线读 SQLServer 数据时,配置的账号需拥有同步表所在 Schema 的读权限:

    -- 授予指定 Schema 的读权限
    GRANT SELECT ON SCHEMA::dbo TO datasail_user;
    
    -- 如需指定特定表的读权限
    GRANT SELECT ON [dbo].[your_table] TO datasail_user;
    
  • 离线写 SQLServer 数据时,配置的账号需拥有同步表的写(INSERT、DELETE、UPDATE)权限:

    -- 授予指定 Schema 的写权限
    GRANT INSERT, UPDATE, DELETE ON SCHEMA::dbo TO datasail_user;
    -- 单独授权指定表
    GRANT SELECT ON [dbo].[your_table] TO datasail_user;
    
  • 数据同步解决方案(实时 CDC 读取) 使用 SQLServer 数据源配置实时方案时,需要配置的账号具备以下额外权限:

    -- 授予查看数据库级别变更的权限
    GRANT VIEW DATABASE STATE TO datasail_user;
    
    -- 授予查看服务器状态的权限(用于监控 CDC 状态)
    USE master;
    GRANT VIEW SERVER STATE TO datasail_login;
    
    -- 将用户添加到 db_datareader 角色(读取 CDC 变更表)
    USE [your_database];
    EXEC sp_addrolemember 'db_datareader', 'datasail_user';
    

    Change Data Capture (CDC) 所需权限:

    EXEC sp_addrolemember 'db_owner', 'datasail_user';
    -- 或者更精细的控制:
    GRANT SELECT ON SCHEMA::cdc TO datasail_user;
    

2.2 CDC/CT 服务端配置(实时同步必读)

SQL Server 实时整库同步依赖 Change Data Capture (CDC) 机制来捕获数据变更。在配置实时同步任务前,需要在 SQL Server 服务端完成以下配置。
如果您只使用离线批式同步,可以跳过本节。

2.2.1 启用数据库级别 CDC

-- 启用数据库的 CDC 功能
USE [your_database];
EXEC sys.sp_cdc_enable_db;

-- 验证是否启用成功(is_cdc_enabled 应返回 1)
SELECT name, is_cdc_enabled FROM sys.databases WHERE name = 'your_database';

2.2.2 启用表级别 CDC

-- 对需要同步的每张表启用 CDC
USE [your_database];
EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'your_table',
    @role_name = NULL,
    @supports_net_changes = 1;

-- 验证表级别 CDC 是否启用
SELECT name, is_tracked_by_cdc FROM sys.tables WHERE name = 'your_table';

如果您需要同步整库中的所有表,可以使用以下脚本批量启用所有表的 CDC:

USE [your_database];
DECLARE @schema_name NVARCHAR(128);
DECLARE @table_name NVARCHAR(128);
DECLARE table_cursor CURSOR FOR
    SELECT s.name, t.name
    FROM sys.tables t
    JOIN sys.schemas s ON t.schema_id = s.schema_id
    WHERE t.is_tracked_by_cdc = 0 AND t.type = 'U';

OPEN table_cursor;
FETCH NEXT FROM table_cursor INTO @schema_name, @table_name;

WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC sys.sp_cdc_enable_table
        @source_schema = @schema_name,
        @source_name = @table_name,
        @role_name = NULL,
        @supports_net_changes = 1;
    PRINT 'Enabled CDC for: ' + @schema_name + '.' + @table_name;
    FETCH NEXT FROM table_cursor INTO @schema_name, @table_name;
END

CLOSE table_cursor;
DEALLOCATE table_cursor;

2.2.3 确认 SQL Server Agent 运行状态

CDC 依赖 SQL Server Agent 来运行捕获和清理作业。请确保 SQL Server Agent 处于运行状态:

-- 查看 CDC 捕获和清理作业的状态
USE [your_database];
EXEC sys.sp_cdc_help_jobs;

注意

  • SQL Server Agent 必须处于运行状态,否则 CDC 变更数据将无法被捕获。
  • 对于 Azure SQL Database,CDC 通过后台自动运行,无需手动管理 Agent。

2.2.4 CDC 保留期配置

CDC 默认保留变更数据 3 天(4320 分钟)。如果同步任务可能出现较长时间的暂停或回溯,建议调大保留期:

-- 查看当前 CDC 保留期设置
USE [your_database];
EXEC sys.sp_cdc_help_jobs;

-- 修改 CDC 清理作业的保留期(单位:分钟,以下示例为 7 天)
EXEC sys.sp_cdc_change_job
    @job_type = N'cleanup',
    @retention = 10080;

2.3 TCP/IP 协议配置

SQL Server 默认可能未启用 TCP/IP 协议,需要确保 TCP/IP 已启用,DataSail 才能通过网络连接到数据库:

  1. 打开 SQL Server Configuration Manager。
  2. 展开 SQL Server Network Configuration > Protocols for [实例名]。
  3. 确认 TCP/IP 的状态为 Enabled。
  4. 右键 TCP/IP > Properties > IP Addresses 标签页,确认端口号(默认 1433)。
  5. 如有修改,需要重启 SQL Server 服务使配置生效。
-- 验证 TCP/IP 连接是否正常(从 DataSail 资源组网络测试)
-- 使用 sqlcmd 工具:
-- sqlcmd -S <host>,<port> -U datasail_login -P <password> -d your_database -Q "SELECT 1"

2.4 快照隔离建议

为避免在全量同步阶段对生产数据库造成锁等待,建议启用快照隔离级别:

-- 启用数据库的快照隔离
ALTER DATABASE [your_database] SET ALLOW_SNAPSHOT_ISOLATION ON;

-- 启用读已提交快照隔离(推荐)
ALTER DATABASE [your_database] SET READ_COMMITTED_SNAPSHOT ON;

说明

启用快照隔离会增加 tempdb 的空间使用。请确保 tempdb 有足够的磁盘空间。

2.5 网络连通

确保集成同步任务使用的独享数据集成资源组,具有 SQLServer 数据库节点的网络访问能力。网络互通方案详见网络连通解决方案。

  • 数据源为 RDS 云数据库实例时,需要将集成资源组所在 VPC 中的 IPv4 CIDR 地址添加到 SQLServer 访问白名单中:
    1. 确认集成资源组所在的 VPC。
      Image
    2. 查看 VPC 的 IPv4 CIDR 地址。

      注意

      若考虑安全因素,减少 IP CIDR 的访问范围,您至少需要将集成资源组绑定的子网下的 IPv4 CIDR 地址加入到数据库白名单中。

      Image
    3. 将获取到的 IPv4 CIDR 地址添加进 SQLServer 数据库白名单中,添加操作详见创建白名单。
      Image
  • 数据源为公网自建数据源,需通过公网形式访问:
    1. 集成资源组开通公网访问能力,操作详见开通公网。
    2. 并将公网 IP 地址,添加进 SQLServer 数据库白名单中。
  • 连接串方式的网络说明
    连接串形式支持跨账号/跨地域访问 SQLServer 数据源实例,您可通过公网或 CEN 云企业网打通独享集成资源组与数据源实例的网络。
    • 如果使用的是公网连接串访问,则需要给集成资源组添加公网 IP,并将公网 IP 地址加入到白名单中。
    • 如果使用的是私网连接串访问,则需要将资源组 VPC 下的 IPv4 CIDR 地址加入到白名单中。

2.6 连接安全(SSL/TLS)

SQL Server 支持 TLS 加密连接。DataSail 使用 JDBC 连接 SQL Server 时,可以通过连接串参数配置加密:

加密模式

连接串参数

说明

不加密(默认)

encrypt=false

不使用 TLS 加密,适用于内网环境。

加密但不验证证书

encrypt=true;trustServerCertificate=true

使用 TLS 加密但跳过证书验证,适用于自签名证书。

加密且验证证书

encrypt=true;trustServerCertificate=false

使用 TLS 加密并验证服务器证书,推荐用于生产环境。

说明

使用加密且验证证书模式时,需要将 SQL Server 的 CA 证书导入到 JVM 的信任存储中。

3 支持的字段类型

SQL Server 全量的字段类型详见 SQL Server 帮助文档。以 SQL Server 2016 为例,列举常见的字段类型支持情况。

  • 整数类型

    字段类型

    SQL Server Reader

    SQL Server Writer

    bigint

    ✅ 支持

    ✅ 支持

    int

    ✅ 支持

    ✅ 支持

    smallint

    ✅ 支持

    ✅ 支持

    tinyint

    ✅ 支持

    ✅ 支持

    bit

    ✅ 支持

    ✅ 支持

  • 精确数值类型

    字段类型

    SQL Server Reader

    SQL Server Writer

    decimal

    ✅ 支持

    ✅ 支持

    numeric

    ✅ 支持

    ✅ 支持

    money

    ✅ 支持

    ✅ 支持

    smallmoney

    ✅ 支持

    ✅ 支持

  • 浮点类型

    字段类型

    SQL Server Reader

    SQL Server Writer

    float

    ✅ 支持

    ✅ 支持

    real

    ✅ 支持

    ✅ 支持

  • 日期时间类型

    字段类型

    SQL Server Reader

    SQL Server Writer

    date

    ✅ 支持

    ✅ 支持

    datetime

    ✅ 支持

    ✅ 支持

    datetime2

    ✅ 支持

    ✅ 支持

    smalldatetime

    ✅ 支持

    ✅ 支持

    time

    ✅ 支持

    ✅ 支持

    datetimeoffset

    ❌ 不支持

    ❌ 不支持

  • 字符串类型

    字段类型

    SQL Server Reader

    SQL Server Writer

    char

    ✅ 支持

    ✅ 支持

    varchar

    ✅ 支持

    ✅ 支持

    text

    ✅ 支持

    ✅ 支持

    nchar

    ✅ 支持

    ✅ 支持

    nvarchar

    ✅ 支持

    ✅ 支持

    ntext

    ✅ 支持

    ✅ 支持

  • 二进制类型

    字段类型

    SQL Server Reader

    SQL Server Writer

    binary

    ✅ 支持

    ✅ 支持

    varbinary

    ✅ 支持

    ✅ 支持

    image

    ✅ 支持

    ✅ 支持

  • 其他类型

    字段类型

    SQL Server Reader

    SQL Server Writer

    uniqueidentifier

    ✅ 支持

    ✅ 支持

    xml

    ✅ 支持

    ✅ 支持

    sql_variant

    ✅ 支持

    ✅ 支持

    cursor

    ❌ 不支持

    ❌ 不支持

    hierarchyid

    ❌ 不支持

    ❌ 不支持

    Spatial Geometry Types

    ❌ 不支持

    ❌ 不支持

    table

    ❌ 不支持

    ❌ 不支持

    rowversion

    ❌ 不支持

    ❌ 不支持

4 数据源注册

4.1 配置信息填写

新建数据源操作详见配置数据源,下面为您介绍用连接串方式配置 SQLServer 数据源信息:

说明

  • 连接串形式支持跨账号/跨地域访问 SQLServer 数据源实例,您可通过公网或 CEN 云企业网打通独享集成资源组与数据源实例的网络,确保网络能互通。网络互通操作详见网络连通解决方案。
  • SQLServer 侧如果是白名单访问机制,则不同网络环境的连接串地址,需要添加不同的 IP 地址到数据库白名单中,确保集成资源组使用的 VPC 与 SQLServer 网络能互通:
    • 如果使用的是公网连接串访问,则需要给集成资源组添加公网 IP,并将公网 IP 地址加入到白名单中。
    • 如果使用的是私网连接串访问,则需要将资源组 VPC 下的 IPv4 CIDR 地址加入到白名单中。
      详见网络连通解决方案。
参数

说明

基本配置

数据源类型

SQLServer

接入方式

连接串

数据源名称

数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

参数配置

主机名或IP地址

SQLServer 数据库的主机名称或者 IP 地址。

端口

主机的端口号。

数据库名

输入已创建的 SQLServer 数据库名称。

是否使用KMS密码

可选择是否使用KMS密码连接数据库。默认关闭不使用,开启后将使用KMS密码。

用户名

有权限访问数据库的用户名信息。

说明

是否使用KMS密码为关闭状态时,需设置该参数。

密码

输入用户名对应的密码信息。

说明

是否使用KMS密码为关闭状态时,需设置该参数。

Secret

用于连接数据库的KMS密码,下拉可选已创建的 SQLServer 凭据。KMS相关信息统一在密钥管理系统中管理,创建凭据的操作可参见凭据管理。

说明

是否使用KMS密码为开启状态时,需设置该参数。

4.2 连通性验证

数据源注册完成后,建议按照以下步骤验证连通性:

  1. 基础连通测试:在数据源注册页面单击测试连通性按钮。

  2. SQL 查询测试:在 DataSail 中执行简单查询验证。

    -- 验证连接和权限
    SELECT @@VERSION;
    SELECT DB_NAME();
    SELECT SCHEMA_NAME();
    
  3. CDC 状态验证(如需实时同步):

    -- 验证数据库 CDC 是否启用
    SELECT name, is_cdc_enabled FROM sys.databases WHERE name = DB_NAME();
    
    -- 验证表 CDC 是否启用
    SELECT name, is_tracked_by_cdc FROM sys.tables WHERE is_tracked_by_cdc = 1;
    
    -- 查看 CDC 捕获实例
    SELECT * FROM cdc.change_tables;
    
  4. 权限验证:

    -- 检查当前用户拥有的权限
    SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
    
最近更新时间:2026.07.03 18:29:48
这个页面对您有帮助吗?
有用
有用
无用
无用