【发布时间】:2010-10-21 17:03:22
【问题描述】:
环境: SQL Server 2005 SP2 (9.0.3077) 事务性出版物(生产和测试版)
我有两个不同的复制出版物设置使用一些相同的文章。这些出版物中的每一个都为不同机器上的订阅者提供信息。这些共享文章之一是表格。在固定的时间间隔内,该表中的许多记录都会老化并且不再需要。这时会调用一个删除记录的存储过程。
为了节省资源并缩短订阅者的延迟时间,我已将此存储过程的复制属性设置为“执行存储过程”,而不是默认的“仅存储过程定义”。这样,当存储过程删除 2,000,000 多条记录时,这些记录不会复制到订阅者。而是复制存储过程的执行,并在订阅者上执行相同的复制存储过程,并删除相同的 2,000,000+ 行。
我遇到的问题是我的第二个出版物。我不需要这种类型的行为,因此我将存储过程上的 article 属性设置为“仅存储过程定义”,并希望复制删除其他订阅者的行,但事实并非如此。订户的桌子不断获得记录。所以要修复它,我将文章属性设置为“执行...”并称之为好。这可能是最好的解决方案,因此测试版与生产相匹配,但它仍然感觉像是一个杂物,因为发布属性应该彼此独立工作。
问题:为什么“执行存储过程”文章属性优先并应用于其他发布,即使它在其他发布中设置为“仅存储过程定义”?
【问题讨论】:
-
不想在这里玩 Stackoverlfow 但是这个问题是一个相当高级的 SQL Server 复制查询。我建议将其发布在 Microsoft SQL Server 复制论坛上,然后使用结果更新此帖子。
-
虽然我现在也在做一些复制工作,但我同意 John 的观点。这是一个相当棘手的问题。祝你好运。 :) 可能要等到有人提出 querytimeout.com
-
同意,Hillary Cotter 是著名的复制专家,并关注 sql server 复制论坛social.msdn.microsoft.com/Forums/en-US/sqlreplication
-
试试 ServerFault.com。现在任何人都可以使用密码“alt.sysadmin.recovery”访问它
-
我接受它按预期工作,并认为这是 Microsoft SQL SErver 的未记录功能。
标签: sql-server database sql-server-2005 replication