SQL Server 需要的权限
本文介绍 SQL Server 作为源端或对端数据源迁移或同步数据时,CloudCanal 所需的账号权限。
如果添加数据源时使用的 SQL Server 账号已经具有 DBA/SA 权限,则可忽略以下具体权限申请。
账号创建
若已准备好专用同步账号,可跳过本节。
- 创建 CloudCanal 登录账号用于连接数据库。
CREATE LOGIN [cloudcanal]
WITH PASSWORD=N'cloudcanal',
DEFAULT_DATABASE=[master],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF - 授权 CloudCanal 登录账号可以连接数据库。
GRANT CONNECT SQL TO [cloudcanal]
作为源端权限
CloudCanal 支持两种 CDC 模式:动态 CDC 模式 和 静态 CDC 模式,详细说明请参考 SQL Server 源端同步模式说明。
动态 CDC 模式
- 切换到 your_source_db 源端数据库,为下一步分配数据库用户做准备。
USE [your_source_db] - 为 CloudCanal 登录账号分配同名数据库用户。
CREATE USER [cloudcanal] FOR LOGIN [cloudcanal] - 为 your_source_db 数据启用 CDC,该命令需要 sysadmin 服务器角色, 应由 DBA 单独操作。
exec [your_source_db].sys.sp_cdc_enable_db - 为 CloudCanal 登录账号分配 db_owner 身份,新建任务创建 CDC 表需要该权限。
ALTER ROLE [db_owner] ADD MEMBER [cloudcanal]
静态 CDC 模式
CloudCanal 在静态模式会根据账号是否拥有 db_owner 角色,分以下两种情况:
ALTER ROLE [db_owner] ADD MEMBER [cloudcanal]
-
账号已在 db_owner
- CloudCanal 会自动执行表级 CDC 的启用,无需手动运行
sys.sp_cdc_enable_table。
- CloudCanal 会自动执行表级 CDC 的启用,无需手动运行
-
账号非 db_owner(或备库)
- 无法自行启用订阅,该步骤需由 DBA 完成。
信息capture_instance 格式要求 db_schema_table_cc_static
USE [your_source_db];
-- 启用表级 CDC
EXEC sys.sp_cdc_enable_table
@source_schema = 'dbo',
@source_name = 'YourTable',
@role_name = NULL,
@capture_instance = 'db_schema_table_cc_static',
@supports_net_changes= 0;- 只需对业务 Schema 及 CDC Schema 授予 SELECT 权限。
USE [your_source_db];
GRANT SELECT ON SCHEMA::<YourSchema> TO [cloudcanal];
GRANT SELECT ON SCHEMA::cdc TO [cloudcanal]; -
CDC 状态检测权限:
USE msdb;
GRANT SELECT ON DATABASE::msdb TO [cloudcanal];