我有一个使用 4 个单独数据库的 Win Form、Data Entry、应用程序。这是一个偶尔连接的应用程序,它使用合并复制 ( SQL 2005 ) 保持同步。这工作得很好。我要解决的下一个障碍是在我的出版物中添加过滤器。
现在,我们正在向 150 个订阅者中的每个订阅者复制 70mbs,压缩后,事实上,他们只需要其中的一小部分。使用过滤器我可以做到这一点(见下面的代码),但我必须制作一个映射表才能做到这一点。此映射表由 3 列组成。PrimaryID(Guid)、WorkerName(varchar) 和 ClientID(int)。
问题是我需要所有四个数据库中都存在此表才能将其用于过滤器,因为据我所知,过滤器语句中不允许视图或跨数据库查询。
我有哪些选择?
似乎我会将其设置为在 1 个数据库中维护,然后使用触发器在其他 3 个数据库中保持更新。为了成为过滤器的一部分,我必须将该表包含在复制集中,所以我该如何适当地标记它。
有更好的方法吗?
SELECT <published_columns> FROM [dbo].[tblPlan] WHERE [ClientID] IN (select ClientID from [dbo].[tblWorkerOwnership] where WorkerID = SUSER_SNAME())
这允许您将过滤器链接在一起,下一个位于第一个下方,因此它仅从第一个过滤集中提取。
SELECT <published_columns> FROM [dbo].[tblPlan] INNER JOIN [dbo].[tblHealthAssessmentReview] ON [tblPlan].[PlanID] = [tblHealthAssessmentReview].[PlanID]