SQL Server合并复制权限问题

时间:2013-05-31 19:10:33

标签: sql sql-server-2008-r2 replication merge-replication

我有一个合并复制设置,在我们的开发服务器(SQL Server 2008 R2 SP2)上有一个发布,在我的本地机器上有一个订阅。出版商作为自己的经销商。本地计算机上的订阅属性中的发布者和分发者连接使用发布的发布访问列表(PAL)中的登录(来自开发服务器)。如果我将此登录名添加到发布者的sysadmin服务器角色,则在同步订阅时一切正常。但是,如果我从sysadmin服务器角色中删除登录,则同步不起作用 - 我得到超时(“操作超时”)。

我的理解是我只需要将登录添加到PAL,但我必须遗漏具有必要权限的内容。

我遇到的另一个问题是,是否可以创建一个数据库角色,其成员会自动添加到PAL中。我在某处读过SQL Server 2008 SP3可以实现这一点;我想知道SP2是否可行。或者有没有办法创建一个具有所有必要权限的数据库角色,以便其成员(用户)可以在订阅中使用(作为发布者和分发者连接)?

所有这些的背景是我们有订阅我们的出版物的用户,但我们只想根据他们的登录复制数据。因此,我们在使用SUSER_SNAME()的文章中过滤了行。

提前致谢。

布拉德

1 个答案:

答案 0 :(得分:2)

如果这是推送订阅,则用于与发布服务器和分发服务器建立连接的合并代理进程帐户必须是分发数据库中的db_owner,是PAL的成员,与发布数据库中的用户关联的登录名,并具有对快照共享的读取权限。

如果这是一个请求订阅,那么用于建立与订阅服务器的连接的合并代理进程帐户必须是订阅数据库中的db_owner。用于连接到发布服务器和分发服务器的帐户必须是PAL的成员,与发布和分发数据库中的用户关联的登录名,并且具有快照共享的读取权限。

Replication Agent Security Model中的代理所需的权限部分涵盖了这一点。