情况是这样的:我们有一个SQL Server复制订户数据库,它从我们的一个核心OLTP系统接收复制数据,我们将其用作填充数据仓库的源。 (我们的OLTP数据库也由第三方供应商托管)。
为了提高订阅者的性能,我想删除早于我们已建立的数据保留限制的数据行。我们不能在发布者数据库中执行此操作并删除删除,因为这将成本过高(供应商),并且可能会加剧使用前端的其他业务单位。
我想知道我是否可以继续在订阅者数据库上执行数据保留删除,而无需(a)以某种方式破坏复制或(b)复制只是重新填充这些已删除的行。这可能吗?
答案 0 :(得分:0)
是的,这是可能的。您在订阅者上删除的行将继续消失。复制不会因此而中断,因为在最坏的情况下,可以复制DELETE
或UPDATE
语句,然后不会删除/更新任何内容(这不是错误)。
但有一点需要注意:如果必须重新初始化订阅(由于各种原因可能需要重新初始化,例如,如果订阅者发生数据损坏,或者某些* CENSORED *插入了不应插入和复制的数据(),将生成一个包含已删除行的新快照,然后重新出现在订阅者身上。如果要删除大量行(通过批处理,很可能),您将不得不重新运行删除并注意它们不会产生巨大的负载。
答案 1 :(得分:0)
实际上,如果您也从发布者数据库中删除了相同的记录,则复制会中断。因为当命令尝试从订户中删除行时,由于未找到实际记录,因此会报错。
我已经在事务复制上尝试过此方法。而且我认为Update命令也会发生同样的情况。