ISPMLUSER函数在Msmerge _ * _ VIEW视图中调用了什么?

时间:2009-08-05 11:08:25

标签: sql sql-server sql-server-2005 replication

我正在尝试了解SQL Server 2005复制的工作原理,我正在查看标题为Msmerge_[Publication]_[Table]_VIEW的视图。这些视图似乎定义了合并过滤器,并且非常简单,除了WHERE子句中的一行sql:

AND ({fn ISPALUSER('1A381615-B57D-4915-BA4B-E16BF7A9AC58')} = 1)

ISPALUSER功能有什么作用?我似乎无法在管理工作室的任何功能下找到它,也没有在网上提及它。

(我正在查看这些视图的原因是当客户端复制新记录时我们遇到性能问题。像if not exists (select 1 from [MSmerge_[Publication]_[Table]_VIEW] where [rowguid] = @rowguid)这样的Sql正在运行并且每行花费10秒以上 ,当你有超过几行的时候会狠狠地杀死性能)

1 个答案:

答案 0 :(得分:1)

似乎检查用户是否处于特殊安全角色MSmerge_PAL_role,这似乎决定了谁有权访问复制功能。

因此,ISPALUSER会检查用户是否处于该特定角色。

仍然不确定PAL代表什么。