SQL Server 2019合并复制双向自动同步配置方案求助
SQL Server 合并复制自动同步配置方案(Windows 10 环境)
方案1:利用SQL Server合并复制内置调度实现自动同步
合并复制本身自带自动同步调度机制,无需依赖Windows Data Sync Center,这是最稳定原生的实现方式:
- 配置发布端同步规则(Windows Server 2019 上的 SQL Server 2019 Standard):
- 打开SQL Server Management Studio(SSMS),连接到发布服务器实例。
- 展开「复制」→「本地发布」,右键目标合并发布,选择「属性」。
- 切换到「同步调度」选项卡,点击「新建」创建调度:
- 设置同步频率(如每5分钟、每小时,或指定时间段)
- 指定运行身份(建议使用拥有发布/订阅权限的域账户或SQL Server代理账户)
- 确认调度处于启用状态
- 配置订阅端同步规则(Windows 10 上的 SQL Server 2019 Express):
- 连接到订阅服务器实例。
- 展开「复制」→「本地订阅」,右键目标订阅,选择「属性」。
- 在「同步调度」中,可选择「按发布服务器的调度同步」,或自定义独立的同步频率。
- 启用SQL Server代理服务(Express版默认禁用):
- 打开「服务」(
services.msc) - 找到对应实例的SQL Server代理服务(默认名为
SQLAgent$SQLEXPRESS),将启动类型设为「自动」,并启动服务
- 打开「服务」(
方案2:用Windows任务计划触发同步脚本
如果需要更灵活的触发逻辑(如基于特定事件同步),可通过任务计划调用同步脚本:
- 编写同步脚本(示例PowerShell脚本,保存为
Sync-Replication.ps1):$subDB = "你的订阅数据库名" $pubInstance = "发布服务器实例名" $pubName = "你的发布名" Invoke-SqlCmd -ServerInstance ".\SQLEXPRESS" -Database $subDB -Query " EXEC sp_mergepullsubscription_agent @publisher = N'$pubInstance', @publisher_db = N'你的发布数据库名', @publication = N'$pubName', @subscriber = N'WIN10-PC\SQLEXPRESS', @subscriber_db = N'$subDB'; " - 创建Windows任务计划:
- 打开「任务计划程序」,点击「创建基本任务」
- 设置触发条件(如「按时间间隔重复」或「当系统事件触发」)
- 操作选择「启动程序」,程序路径选
powershell.exe,参数填-ExecutionPolicy Bypass -File "C:\脚本存放路径\Sync-Replication.ps1" - 指定运行身份为拥有数据库操作权限的账户,勾选「不管用户是否登录都要运行」
关键注意事项
- 确保发布端与订阅端网络连通,防火墙开放SQL Server端口(默认1433,或自定义端口)。
- 提前配置合并复制的冲突检测与解决规则,避免自动同步时因数据冲突导致同步失败。
- Windows 10 中 Data Sync Center 已不再作为推荐同步工具,优先使用SQL Server原生机制或任务计划实现自动同步。
内容的提问来源于stack exchange,提问作者jezz
相关产品推荐
相关产品推荐

