为什么复制删除需要系统管理员访问

pet*_*ter 7 replication sql-server merge-replication

我正在使用 SQL 2012 运行合并复制。

在 SQL 2012 中为复制添加的删除触发器似乎有一个令人讨厌的后果。

在删除触发器里面是这样的,

select @xe_message = CAST('replica_id: ' + convert(nvarchar(100), @replnick) + ', article_id: ' + convert(nvarchar(100), @tablenick) + ', rowguid: ' + case when @article_rows_deleted = 1 then convert(nvarchar(100), @rowguid) else N'0' end + ', generation: ' + case when @is_mergeagent = 1 then N'0' else convert(nvarchar(100), @newgen) end + ', Reason: -1' AS varbinary(1000));
        exec master..sp_repl_generateevent 1, N'Event : ppm_insert', @xe_message
Run Code Online (Sandbox Code Playgroud)

如果某人不在系统管理员角色中进行删除,则会发生错误,

Msg 8189, Level 14, State 10, Procedure sp_repl_generateevent, Line 1
You do not have permission to run 'SP_TRACE_GENERATEEVENT'.
Run Code Online (Sandbox Code Playgroud)

那么您是说我的数据库的每个用户如果要进行删除操作都必须具有 sysadmin 访问权限?

这似乎是错误的。有没有办法关闭此跟踪或删除此要求的替代方法?

Tho*_*ger 7

那么您是说我的数据库的每个用户如果要进行删除操作都必须具有 sysadmin 访问权限

不,根据BOL 关于 sp_trace_generateevent 的文档

用户必须有ALTER TRACE权限。