我不确定它是否会引起问题。但是在我们的环境中,无论何时从大表中进行选择,我们都需要包含,WITH(nolock)
否则我们会在选择语句和尝试填充这些表的 Informatica 实时复制之间出现死锁。目前我们正在寻找使用 SQL 作业来清除表中的旧记录。大多数表每周删除的行数少于 1000 行。在初始清除过程中,将有几个表将删除数百万条记录。
不确定在清除期间暂停实时复制是否会更好,或者只是在出现冲突时尝试解决冲突。
我没有在开发环境中测试它的好方法,因为没有相同数量的人通过请求、实时更新和其他构成生产中正常负载的所有内容访问服务器。在生产中,这将在缓慢的时间每周运行一次,这应该可以最大限度地减少总负载,但仍然不希望每次运行时都会使 Informatica 崩溃。
注意:这个问题不是关于如何在 SQL 中编写删除语句或在小块中破坏删除,而是关于如何避免与 Informatica 产品的实时复制发生冲突。
数据库 - SQL Server 2012
复制 - Informatica 9.0.1