基于AWS DMS的SQL Server 2017事务复制新增表操作咨询
在SQL Server 2017事务复制中新增表(副端为AWS DMS)的操作步骤
由于AWS DMS作为订阅端时,SQL Server本地无法通过SSMS看到订阅对象,需要结合SQL Server发布端脚本操作和AWS DMS端配置调整来完成新增表的同步,具体步骤如下:
一、SQL Server发布端操作
- 修改发布属性
因为DMS对应的订阅属于匿名/推送类型,需先通过T-SQL调整发布的allow_anonymous和allow_sync_tran属性:
USE [你的发布数据库名] -- 关闭匿名订阅允许 EXEC sp_changepublication @publication = N'目标发布名称', @property = N'allow_anonymous', @value = 'false' GO -- 关闭同步事务允许 EXEC sp_changepublication @publication = N'目标发布名称', @property = N'allow_sync_tran', @value = 'false' GO
- 将新表添加到发布中
使用脚本将目标表加入发布,可按需添加筛选、列映射等配置:
USE [你的发布数据库名] EXEC sp_addarticle @publication = N'目标发布名称', @article = N'新增表名', @source_object = N'新增表名', @source_owner = N'dbo' -- 替换为表实际所属架构 -- 如需自定义复制规则,可添加@filter_clause、@destination_table等参数 GO
- 生成新的发布快照
新增表需要通过快照完成初始化,直接生成发布的快照即可:
- SSMS操作:找到对应发布,右键选择「生成快照」;
- 脚本操作:
EXEC sp_startpublication_snapshot @publication = N'目标发布名称' GO
确认快照代理服务处于运行状态,且快照生成成功(可检查SQL Server快照文件夹的新增文件)。
二、AWS DMS端操作
暂停当前DMS复制任务
登录AWS控制台,进入DMS服务,找到对应的复制任务,点击「暂停」。更新表映射配置
进入任务的「表映射」页面:
- 如果之前使用通配符匹配表(如
%),新增表会自动被包含,只需确认映射规则; - 如果是手动指定表,需添加新增表的映射规则,确保架构、表名映射正确,并设置同步模式为「全量+增量」(保证新表先同步全量数据,再跟进事务日志)。
重启DMS任务并初始化新表
启动任务时,选择「重新加载目标表」或「应用快照初始化」选项,确保DMS从新生成的快照中加载新增表的全量数据,之后自动同步后续事务。验证同步结果
在DMS的目标数据库中,检查新增表的数据是否与源端完全一致,同时测试源端表的增删改操作,确认目标端能实时同步。
注意事项
- 确保SQL Server快照代理拥有快照文件夹的读写权限,且DMS源端点具备读取SQL Server发布快照的权限;
- 操作前建议备份源端发布数据库和目标端相关数据,避免意外数据丢失;
- 若任务启动后报错,优先查看DMS任务日志和SQL Server复制代理日志,排查权限、表结构兼容等问题。
内容的提问来源于stack exchange,提问作者Aditya Sawant
相关产品推荐
相关产品推荐

