合并复制报错:无SP_TRACE_GENERATEEVENT执行权限问题排查
解决SQL Server合并复制快照传递失败的权限问题
从你提供的错误日志来看,核心问题非常明确:合并复制代理使用的账号没有执行SP_TRACE_GENERATEEVENT的权限,这直接导致了快照无法传递到订阅服务器DUCKDUCK-2。下面是一步步的实操解决方案:
1. 定位合并代理的运行账号
首先得确认是哪个账号在执行合并复制代理:
- 打开SQL Server Management Studio(SSMS),连接到分发/发布服务器DUCKDUCK-1-1
- 展开SQL Server代理 → 作业,找到对应的合并代理作业(名字和你日志里的
XJOBNAME一致:DUCKDUCK-1-1-mydatabase-Replication2018-DUCKDUCK-2-1) - 右键作业 → 属性 → 步骤,查看步骤的“运行身份”,这就是需要授权的目标账号
2. 授予ALTER TRACE服务器级权限
SP_TRACE_GENERATEEVENT需要服务器级的ALTER TRACE权限,在DUCKDUCK-1-1上执行以下SQL(替换成你的实际账号):
如果是SQL登录账号:
USE master; GO GRANT ALTER TRACE TO [你的SQL登录名]; GO
如果是Windows域账号:
USE master; GO GRANT ALTER TRACE TO [DOMAIN\你的域账号]; GO
3. 验证权限并重启代理
- 授权完成后,回到SQL Server代理,找到对应的合并代理作业,右键 → 停止,然后再启动
- 重新触发合并同步,检查订阅服务器DUCKDUCK-2上的目标表是否能正常接收快照数据
4. 额外检查:快照共享文件夹权限
错误日志里还提到了快照传递的问题,别忘了确认:
- 订阅服务器DUCKDUCK-2的运行账号(或合并代理访问订阅端的账号)是否能访问分发服务器上的快照共享文件夹
\\DUCKDUCK-1-1\snapshot_replicacion\ - 确保该账号对这个共享文件夹有读取和写入权限,否则快照文件无法正常传输
附:你提供的核心错误信息
Error messages: You do not have permission to run 'SP_TRACE_GENERATEEVENT'. (Source: MSSQLServer, Error number: 8189) The merge process was unable to deliver the snapshot to the Subscriber. If using Web synchronization, the merge process may have been unable to create or write to the message file. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147201001)
内容的提问来源于stack exchange,提问作者Stephen H. Anderson
相关产品推荐
相关产品推荐

