SQL Server复制过滤

时间:2013-07-18 00:29:42

标签: sql-server replication

我们正在SQL Server 2008(源)和SQL Server 2012(目标)之间复制数据。我们被要求将复制的数据限制为我们需要的数据。

所以,我们可以添加一个过滤器,但是,过滤器是基于另一个表中的东西。我们不能使用JOIN。 (事务复制)。

但是,我注意到在WHERE子句的编辑器中,它允许这样:

SELECT * FROM party WHERE party_id NOT IN (SELECT child_party_id FROM placement)

这就是我们需要过滤的东西。编辑器是否允许我放置一些无法使用的东西,因为目标中的数据似乎根本没有被过滤。

2 个答案:

答案 0 :(得分:0)

您尝试过吗?

SELECT * FROM party p
WHERE NOT EXISTS(SELECT 1 FROM placement
                 WHERE child_party_id = p.party_id)

答案 1 :(得分:-1)

我遇到了同样的问题......因为在子查询表(在where子句中使用的表)上删除\ update之后,trasactional复制不会刷新数据。

在你的例子中, SELECT * FROM party WHERE party_id NOT IN(SELECT child_party_id FROM placement) 放置表上的更新不会告诉复制从表派对推送行。