历史版本11 :SQL Server环境准备 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

通过数据管道实时同步 SQL Server 的数据时,来源数据源为SQL Server,去向数据源为 MySQL 或者SQL Server,执行同步任务前,需要参考本文在数据源中进行一些配置,为后续的数据同步做好准备。

2. 操作步骤编辑

2.1 确认当前使用的数据库版本

同步来源数据源的数据至去向数据源之前,需要确保 SQL Server 数据源中不存在数据管道不支持的数据库版本。

数据管道支持的 SQL Server 数据库读取类型(来源数据库)及版本如下表所示:

数据库类型支持数据库版本
SQL ServerSQL Server 2008 及以上企业版(Enterprise Edition), SQL Server 2016 SP1 及以上标准版(Standard)

数据管道支持的 SQL Server 数据库写入类型(目标数据库)及版本如下表所示:

数据库类型支持数据库版本
SQL Server2000、2005、2008、2012、2014、2016、2017

使用命令行sqlcmd -S 服务器地址 -U 用户名 -P 密码,或者通过 sql server management studio 进入数据库操作界面。

可以通过如下语句查看数据库的版本。

select @@version

2.2 读取数据库开启CDC

2.2.1 开启 Sql Server 数据库代理服务

需要确保 SQL Server Agent 为运行状态。

检查方法:使用 sysadmin 角色的用户执行 EXEC master.dbo.xp_servicecontrol N'QUERYSTATE', N'SQLSERVERAGENT'; 并确保结果为 Running,则标识SQL Server Agent 运行中。

若结果为 Stopped,此时需要使用 sysadmin 角色的用户开启数据库代理服务。

界面操作方式:

在开始菜单中,找到 Microsoft SQL Server >配置工具,然后打开SQL Server 配置管理器。

在 SQL Server 配置管理器中,展开服务,然后单击SQL 代理。在结果窗格中,右键单击启动,如下图所示:

SQL Server Agent 旁的图标上和工具栏上的绿色箭头指示 SQL Server Agent 已成功启动,如下图所示:

2.2.2 开启 CDC 变更数据捕获

开启数据库 CDC

使用命令开启:

use [数据库名称]
go
EXEC sys.sp_cdc_enable_db
go

注:其中数据库名称是要启用增量复制的数据库。

使用命令检查是否已经开启CDC:

SELECT [name], database_id, is_cdc_enabled 
FROM sys.databases WHERE [name] = N'[数据库名称]'
go

注:其中数据库名称是要启用增量复制的数据库。

开启数据表 CDC

注:对数据库开启 CDC 后,需要对数据表也开启 CDC,否则无法进行数据管道任务配置。

使用命令开启:

use<数据库名称>
go
EXEC sys.sp_cdc_enable_table
@source_schema = N'[Schema]',
@source_name = N'[Table]',
@role_name = N'[Role]'
go

注:Table是数据表的名称(没有 schema )。Role 是可以访问更改数据的角色。如果您不想使用选通角色,请将其设置为null。

例如,schema 模式为 dbo,则示例如下:

use Roxy
go
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'test',
@role_name = N'null'
go

如下图所示:

使用命令检查是否已经开启CDC:

use <数据库名称>
go
SELECT [name],is_tracked_by_cdc
FROM sys.tables
WHERE [name] = N'[table]'
go

2.3 确认数据库账号权限

需要规划一个可访问数据源的账号,用于后续数据管道过程中访问数据源并进行数据提取、写入的同步操作。

创建账号操作详情请参见: 创建Sql server 账号

创建用户示例语句可参考:

use <your database>;
create login test with password='<your password>';
go
create user test for login test;
go

注:test 为用户名称。

此时即可使用该用户配置数据源,如下图所示:

2.3.1 角色要求

数据管道功能需要使用 SQL Server 数据库 public 数据库角色 中的 db_datareader 用户。

例如可使用以下命令将用户添加到固定数据库级角色 db_datareader。

use <your database>;
go
exec sp_addrolemember 'db_datareader','<your user>'
go

2.3.2 权限要求

数据管道需要 SQL Server 数据库用户拥有数据源表的 SELECT 权限、INFORMATION_SCHEMA 的 SELECT 权限、sys 的 SELECT 权限。

  • 对需要进行同步的表赋予SELECT权限

use <your database>;
grant select on OBJECT::<your schema>.<your table name> to test;

// 假设database是master,schema是dbo,表名是users,示例:
use master;
grant select on OBJECT::dbo.users to test;

注:test 为用户名称。

  • 对 SCHEMA 下面所有表赋予SELECT权限

use <your database>;
grant select on SCHEMA::<your schema> to test;

// 假设database是master,schema是dbo,示例:
use master;
grant select on SCHEMA::dbo to test;

注:如果 capture instance 指定了角色(role),该角色需要包含当前用户。

注:test 为用户名称。

  • 增量同步,需要对名为cdc的schema,赋予SELECT权限

-- 增量权限
use <your database>;
grant select on SCHEMA::cdc to test;

3. 后续步骤编辑

在配置好数据库后,即可完成数据源配置。

需要在使用数据管道进行实时同步任务配置前,在 FineDataLink 中配置好需要同步的源端和目标端数据库数据连接,以便在同步任务配置过程中,通过选择数据源名称来控制同步任务,详情参见:配置数据连接

然后设置数据管道任务即可,详情参见:配置数据管道任务