【问题标题】:SQL Replication Setup - Almost ThereSQL 复制设置 - 几乎就在那里
【发布时间】:2026-02-11 20:00:01
【问题描述】:

我正在尝试在两个 SQL Server 之间设置复制,我几乎就在那里,但遇到了权限错误(它出现了)。服务器通过 VPN 连接。

发布者/分发者 = W2003 + SQL2005(域控制器)

订阅者 = W2008 + SQL2008(不属于域的支持服务器)

我将其设置为拉取而不是推送只是因为这是我解决登录问题的方式。

当前状态是两个代理都在运行并且快照已完成但它没有开始复制。下面的错误似乎表明订阅者没有对快照文件夹的权限,但我设置了所有人(完全控制)只是为了尝试让它工作。

我在想是否存在信任问题或其他问题。我可以在没有任何权限问题的情况下从订阅者打开发布者上的快照共享并访问文件。但 SQL 似乎存在某种问题。

您对此处排除故障的后续步骤有何想法?谢谢。

日志到此结束:

2009-07-22 23:34:47.838 Initializing

2009-07-22 23:34:49.263 将从备用文件夹“\[MachineName][share]\unc\SYDNEY_MIRRORMIRROR_MIRRORMIRRORPRODUCT\20090722085146\”应用快照 2009-07-22 23:34:50.809 代理消息代码 20143。由于操作系统错误 5,进程无法读取文件 '\[MachineName][share]\unc\SYDNEY_MIRRORMIRROR_MIRRORMIRRORPRODUCT\20090722085146\TRProductImages_8.pre'。 2009-07-22 23:34:51.524 类别:操作系统 来源:
数量:5 消息:访问被拒绝。

【问题讨论】:

  • 好吧,也许有一些线索。 2008 订阅服务器上的防火墙没有打开任何 SQL 端口。我假设(我的错)通过 VPN 会打开所有端口。我怀疑我可以拉启动而不是推的原因是我们无法连接到 2008 盒子,但它可以连接。想知道即使我可以通过资源管理器手动访问 UNC,访问快照的 UNC 是否也有同样的问题。我正在从 MSDN msdn.microsoft.com/en-us/library/cc646023.aspx 得到端口 1433,137,138,139 打开,我会在端口打开时更新。

标签: sql-server replication


【解决方案1】:

是的,在设置 SQL Server 复制时解决权限问题可能是一件苦差事。从域外的机器访问域控制器上的共享...嗯。您是否尝试在订阅者机器上设置共享?不是最优的,因为它使发布者在创建快照时受到网络 i/o 的支配......但是......

您提到将复制设置为拉取而不是推送,因为它可以解决登录问题。您/您是否尝试过使用 SQL Server 权限而不是 Windows?

我想我还应该提到,如果在这种情况下不是域控制器/非域机器组合,我会首先询问/确认两台机器上运行 SQL Server 服务的登录名是一样的......因为它是我不确定它是否重要。

【讨论】:

    【解决方案2】:

    您在订阅者订阅属性上的安全设置是什么 --> 分发者和发布者连接?

    另外,在发布属性 --> 发布访问列表下;您是否仔细检查过您的订阅者是否在其中?

    【讨论】:

    • 在 SQL2008 分发服务器连接 = 数据库身份验证。该帐户是 SQL2005 Publisher 上的帐户。该帐户位于出版商的出版物访问列表中。感谢您的提示,尽管我现在对身份验证过程有了更好的了解。
    【解决方案3】:

    好吧,事实证明错误消息是正确的。但不是我想的那样。

    我正在通过 VPN 设置复制。我怀疑大多数防火墙的基本起点是您可以在大多数端口上发送但不能接收。

    我能够启动拉式复制但无法推送,并且在尝试读取快照时发生错误。令人困惑的是,我可以从订阅者机器打开共享,为什么 SQL Server 不能提取快照?

    最后发生的事情是 UNC/文件共享 137,138,139 和 445 的端口没有向订阅者“打开”。

    我原以为订阅者会从分发者那里提取快照,但我认为它必须请求它们,但分发者仍在将它们推送给订阅者并在进入的过程中被阻止。

    我证实了我的怀疑,因为我可以打开从订阅者到分销商的共享,但不能从分销商到订阅者。我也无法使用分发服务器上的 SQLMgmtSutdio 连接到订阅服务器,这一切都证明防火墙只是在那个方向阻止它。

    因此,即使端口被阻止,SQL 仍然能够设置发布者、订阅者和分发者,但在我打开它们之前无法启动进程。

    它现在正在运行。

    希望冗长的解释能帮助其他人努力解决这个问题。

    【讨论】: