【问题标题】:SQL Server 2005 ReplicationSQL Server 2005 复制
【发布时间】: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


【解决方案1】:

我们在公司中广泛使用复制,因为我们在多个国家/地区拥有 38 个仓库,所有仓库都复制回我们在伦敦的主服务器。

首先,您的复制过滤器应该使用视图,即使是简单的视图。这样,如果您需要调整过滤器(阅读 WHERE 子句),您只需要更改视图并完成。否则,您必须重新发布您的数据,并重新订阅每个人,这可能会很痛苦。

您提到您在订阅者和发布者上运行相同的删除以使它们保持同步。这让我脊背发凉。您最好将它们删除在一个地方并让服务器将所做的更改复制给订阅者。自 SQL Server 2005 以来,复制现在非常快速高效。 SQL 2000 的复制速度非常慢。如果您使用 SQL 2005/2008,只需确保您的兼容性级别(右键单击数据库、属性、选项)设置为 90 (2005) 或 100 (2008)。这会将 sql server 切换到快速高效的复制方法。

另一种方法是不删除数据,而是保留它并使用发布中的 where 子句将其过滤掉。

【讨论】:

    【解决方案2】:

    自从我主动管理复制以来已经有很长时间了,但我怀疑答案与日志阅读器的体系结构有关,并且您正在出版物之间共享一篇文章。我的理解是日志阅读器将遍历日志并查找对复制项目的操作。根据文章设置,对数据的个别更改可能会发布到分发数据库中的表中,或者将发布过程调用的记录。无论如何,这是文章的属性,而不是文章所属的出版物。我假设(但尚未测试和验证)您可以在同一个数据库对象之上创建多篇文章,并使用 @type='logbased' 复制一篇文章,使用 @type='proc exec' 复制另一篇文章

    对这一切持保留态度:虽然我现在在 SQL 2008 上进行开发,但我最后一次对复制进行任何操作是 SQL 7。

    pjjH

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 1970-01-01
      • 2011-01-10
      • 2010-12-16
      • 2012-05-19
      • 2010-09-18
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多