Sql server 没有删除的SQL Server复制?

Sql server 没有删除的SQL Server复制?,sql-server,sql-server-2005,replication,Sql Server,Sql Server 2005,Replication,有没有一种方法可以复制sql server数据库,但不将删除推送到订阅服务器?这样做……删除本文。在相应的数据库中创建一个新的storedprocedure,该数据库模仿系统存储过程(sp_del…),并包含相同的参数,但不执行任何操作。再次添加文章…并将文章属性下的删除存储过程设置为您创建的新删除存储过程 或者,您可以选择“不复制删除语句”……我认为这是可行的,但我没有尝试过。您没有提到正在运行的SQL Server版本,但Andy Warren写了一篇关于在SQL Server 2005中配

有没有一种方法可以复制sql server数据库,但不将删除推送到订阅服务器?

这样做……删除本文。在相应的数据库中创建一个新的storedprocedure,该数据库模仿系统存储过程(sp_del…),并包含相同的参数,但不执行任何操作。再次添加文章…并将文章属性下的删除存储过程设置为您创建的新删除存储过程


或者,您可以选择“不复制删除语句”……我认为这是可行的,但我没有尝试过。

您没有提到正在运行的SQL Server版本,但Andy Warren写了一篇关于在SQL Server 2005中配置插入、更新和删除行为的文章。您可以使用他的说明,通过GUI对此进行配置:


很容易“干预”正常复制并“解除”订户端的删除存储过程,但这样就无法从复制失败中恢复。如果复制尝试恢复,可能需要重新初始化,这将删除复制代理认为已删除的任何“过时”数据


另一种方法是使用普通复制,并使用脚本在订阅服务器数据库中的所有表上生成insert和update触发器,这些表将数据插入/更新到第三个数据库中。通过这种方式,第三个DB将收集所有曾经存在的数据,第二个DB可以在需要时重新初始化其订阅(当您这样做时,请记住批量插入不会调用插入触发器并检查新数据并将其添加到第三个DB),第一个DB不需要执行触发器所做的额外工作。

太好了-我重新标记了这个问题。你看过Andy的文章了吗?你试过我的建议了吗?请告诉我,如果从表中删除一行,然后用相同的键重新插入,但其他一些数据字段不同,会发生什么情况?警告!我曾经使用过这样的解决方案,当复制出现问题并且需要重新初始化时,我们遇到了很大的问题。我将对这个问题给出一个单独的答案,关于我们使用了什么。我完全同意Stijn的观点,一旦你需要重新初始化复制,历史数据就会消失。。。