不同数据库中的filter需要1个数据表中的数据

我有一个使用4个独立数据库的Win Form,Data Entry应用程序。 这是偶尔连接的应用程序,它使用合并复制SQL 2005 )来保持同步。 这工作得很好。 我正试图解决的下一个障碍是添加filter到我的出版物。

现在我们正在复制70MB的压缩文件给我们的150个用户,如果真的,他们只需要一小部分。 使用filter我可以做到这一点(见下面的代码),但我必须做一个映射表,才能做到这一点。 这个映射表由3列组成。 PrimaryID(Guid),WorkerName(varchar)和ClientID(int)。

问题是我需要这个表在所有的四个数据库中存在,以便将其用于filter,因为据我所知,filter语句中不允许使用视图或跨数据库查询。

我有什么select?

似乎我会设置它在1数据库中维护,然后使用触发器保持其他3个数据库中更新。 为了成为filter的一部分,我必须将该表包含在复制集中,所以如何适当地标记它。

还有更好的方法吗?

SELECT <published_columns> FROM [dbo].[tblPlan] WHERE [ClientID] IN (select ClientID from [dbo].[tblWorkerOwnership] where WorkerID = SUSER_SNAME()) 

它允许你链接filter,这下一个是低于第一个,所以它只能从第一个过滤设置。

 SELECT <published_columns> FROM [dbo].[tblPlan] INNER JOIN [dbo].[tblHealthAssessmentReview] ON [tblPlan].[PlanID] = [tblHealthAssessmentReview].[PlanID] 

根据你需要在服务器上“复制”这个过滤数据有多快,你可以在从属服务器上创build一个作业,用从主服务器来的数据​​更新这些表。 你不会马上得到更新,就像触发器一样,但我认为devise会更干净。

例如,在服务器上执行作为作业的跨数据库查询,这很简单

  DELETE FROM filterTable 

接着

  INSERT INTO filterTable .... 

按照您select的时间表刷新filter中使用的表格。