代码之家  ›  专栏  ›  技术社区  ›  mwolfe02

运行REPLMERG.EXE所需的权限

  •  0
  • mwolfe02  · 技术社区  · 16 年前

    我们在其中一个程序中使用合并复制,我希望允许我们的用户根据需要强制他们的笔记本电脑与发布服务器同步(我们使用的是推送订阅)。我是用REPLMERG.EXE工作的( see my previous question ).

    但是,当用户尝试运行脚本时,会收到以下错误消息:

    只有sysadmin或db\u owner角色的成员才能执行此操作。

    执行sp\u MSreplcheck\u subscribe

    如果我将用户的组登录添加为本地订阅数据库上的db\u所有者,那么脚本将正常工作。问题是,它们最终还可以完全访问本地数据库中的每个表,这是我们无法忍受的。

    3 回复  |  直到 9 年前
        1
  •  2
  •   Remus Rusanu    16 年前

    Replication Agent Security Model :

    代理运行时使用 与订阅服务器的连接。这个 帐户必须 固定数据库角色 订阅 数据库。

    用于连接到发布服务器和分发服务器的帐户必须:

    • 成为朋友的一员。
    • 是与发布数据库中的用户关联的登录名。
    • 对快照共享具有读取权限。

    因此,合并复制的文档化要求运行复制代理(replmerge.exe)的帐户是db\u owner的成员。如果您认为这不适合您的情况,那么合并复制就不是合适的技术,因为它有一个您无法满足的需求。

    现在,一个应用程序可以执行REPLMERGE从另一个应用程序执行的任何操作,您可以利用代码签名的功能运行一组包装程序,这些程序通过代码签名被授予dbo权限,因此不需要提升的登录,但这只是理论,因为复制过程并不容易使用,也没有在重新实现代理所需的级别上进行记录。。。

        2
  •  0
  •   Philippe Grondier    16 年前

        3
  •  0
  •   mwolfe02    16 年前

    正如Remus和Philippe所指出的,订阅db上的db\u所有者是同步合并推送订阅的一个硬需求。但是,我们确实希望允许用户同步他们自己的笔记本电脑,而不给他们数据库的完全db\u所有者权限。

    -订阅安全模式0-订阅登录同步用户-订阅密码4w3$0m3\u P4$$w0Rd