避免在SQL Server中复制DELETE语句

时间:2014-04-08 14:55:16

标签: sql sql-server database-replication

考虑以下情况:

一台PC正在运行Access数据库。旧的旧脚本将从此Access数据库中的所有内容复制到LAN上的SQL Server(A)。但在此之前,它将删除目标数据库中的所有内容,因此它不必处理现有记录。以前存在的记录永远不会改变。

在SQL Server(A)上,定义了复制并充当发布者。它将通过WAN将数据发布/复制到SQL Server(B)。

这一切都运行良好,但我遇到的唯一问题是在将内容复制到SQL Server(A)时出现问题,SQL Server(B)将为空或缺少记录,甚至是记录很久以前就被复制了。

我已经考虑过两种解决方案:

  • 将旧脚本调整为仅复制新记录,因为更新属于增量性质。
  • 配置复制以避免DELETE语句。

在这种情况下,第一种解决方案是不可能的。该应用程序是封闭源代码,我们真的无法改变。

第二种解决方案是理想的,但(A)会尝试复制(B)上已存在的记录,而我不太清楚如何处理。

当然这个问题有一个合理的概念,我还没想出来......

1 个答案:

答案 0 :(得分:0)

在SSMS中转到复制 - >本地出版物并右键单击您的出版物并选择“属性”。在“发布属性”窗口中,单击“文章”和“文章”。并选择相关文章。转到"文章属性"并选择"设置突出显示的表文章的属性"。在文章属性窗口中,更改" DELETE交付格式" to"不要复制DELETE语句"。 更改后单击“确定”,您将看到提示。由于文章属性已更改,因此需要重新初始化订阅。点击"标记重新初始化"这会导致快照应用于订户。 在SSMS中,导航到Replication并右键单击并选择" Launch Replication Monitor"。转到您的出版物,然后单击“查看详细信息”以查看快照进度。