具有水平过滤的事务复制

Transaction replication with horizontal filtering

长话短说,是否可以在 SQL 服务器中复制 table 的行,并具有不断评估的水平过滤功能?

例如,我需要将 table 行复制到自最近两天或更长时间以来创建或更新的订阅者。我需要在源 table 中创建但它们的创建日期早于两天的任何行都被复制到订阅者,并且这在任何新的 created/updated 行上连续完成。我的意思是我不需要复制超过两天的记录。

我在 SQL 服务器 2017 上尝试过使用过滤功能进行事务复制,但过滤功能只是在复制创建时间上进行评估,之后,任何新行都不会传播到订阅者。

  • 向您的 table 添加一列:Alter Table yourTable Add Old_Enough Bit Not Null Default 0
  • 创建定期(例如每小时)运行并运行 Update yourTable Set Old_Enough = 1 Where Old_Enough = 0 And DateAdd(Day, 2, yourCreationDateColumn) < GetDate()
  • 的作业
  • 创建一个采用 Select ... From yourTable Where Old_Enough = 1
  • 的索引视图
  • 复制索引视图