【问题标题】:Transactional replication failing事务复制失败
【发布时间】:2014-07-10 07:54:38
【问题描述】:

我在 sql server 事务复制中遇到问题,无法找到它的根本原因。首先,让我告诉你,我不是 DBA,所以我可能对一些 DBA 概念很愚蠢。 我是 .Net 开发人员,我负责设置复制。

我在总部有一个数据库,并将几个表复制到零售店的另一台服务器。 第一次,我用选定的文章配置了复制。 复制是连续的。它运行良好,但在一个星期天晚上,它因错误“进程无法执行'sp_replcmds'”而失败。 在谷歌上花了一段时间后,我找不到任何解决方案。所以,我重建了复制,但这次复制被安排(每 15 分钟),我也将它配置为 PULL 而不是 PUSH。它开始了,但下个星期天晚上又坠毁了。 因此,我分析了在周日晚上,我已经在数据库上配置了重新索引作业,并且由于恢复模型已满,它正在生成一个非常大的 TLOG,而 Repolication 代理无法解析它。 现在,第三次,我再次重建了复制,这次我安排了每 15 分钟一次的复制,但是从早上 8:00 到晚上 11:30,因为在 11:30 之后,没有商店做任何交易。此外,对于重新索引作业,我又添加了 2 个步骤。在重新索引之前,我将恢复模型更改为简单,然后重新索引,之后我将恢复模型更改回完整。无论重新索引步骤的结果如何,我都将恢复更改为完全。 此设置运行良好,并且正常运行了大约 2 个月。

现在,2 个月后,又是一个星期天晚上,它再次失败,原因相同(“进程无法执行 'sp_replcmds'”)。实际上,我已经安排了备份工作,我每天都进行完整备份,每 15 分钟进行一次日志备份,并且没有差异备份。 之后,发现我没有配置差异备份,我也配置了相同的(每 6 小时一次)。但是,在配置差异备份后,周日晚上复制失败。

现在,任何人,请帮助我为我的场景推荐设置。 我的设置是 sql server - Windows Server 2008 R2 上的 SQL Server 2008 R2 Enterprise Distributor 和 Publisher 在同一台机器上。 订阅者位于零售商店服务器上。

【问题讨论】:

    标签: sql-server transactional-replication


    【解决方案1】:

    sp_replcmds 由日志读取器代理针对已发布的数据库运行,以获取复制的命令。根据documentation,至少需要 db_owner 才能运行该命令。确保运行日志读取器代理的任何帐户在已发布的数据库中至少具有 db_owner。

    【讨论】:

    • 嗨,本,感谢您的回复。我已经提到复制运行良好。启用差异备份后它坏了。我不确定,如果差异备份是唯一的原因。在我的设置中,我结合了备份(完整、差异和 Tlog)、复制(PULL)和重新索引(每周一次,完整数据库)。这很常见。此外,我正在更改恢复模式以在重新索引时跳过繁重的日志。请提出建议,建议的设置方式应该是什么。
    • 所以听起来复制工作了一段时间但随后中断。接下来我要检查的是已发布和分发数据库中的“与备份同步”选项。您可以使用select databasepropertyex('yourDbName', 'IsSyncWithBackup' 执行此操作。我的理论是您在发行商处打开了它,这会阻止日志在发行商处清除。当复制失败时,存放发布者日志文件的驱动器是否已满?
    • 1.如果您有频繁的 t-log 备份,则完全恢复模式是可以的。 2 Diff:不确定是否需要? 3. 不确定您正在使用哪个脚本来维护索引。但是这个很好ola.hallengren.com 4。这个用开关恢复模型重新索引听起来很可怕。不要这样做。 5. 只有日志阅读器崩溃?在订阅者上一切正常吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多