3

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

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

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

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

这就是我们需要过滤的内容。编辑器是否允许我放入一些不起作用的东西,因为目标中的数据似乎根本没有过滤。

4

2 回答 2

0

你试过这个吗?

SELECT * FROM party p
WHERE NOT EXISTS(SELECT 1 FROM placement
                 WHERE child_party_id = p.party_id)
于 2018-07-05T15:43:52.250 回答
-1

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

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

于 2015-06-07T02:10:06.940 回答