Sql-Server

網際網路上的 SQL 複製給出命名管道錯誤

  • October 25, 2015

我們已經在網際網路上的兩台伺服器之間進行了數據庫複製。

伺服器 A 位於我們的伺服器網路上(Windows Server 2008 + SQL Server 2008 R2) 伺服器 B 位於另一個網路上(Windows Server 2008 + SQL Server 2008 R2)

埠仍然打開,啟用 TCP 和命名管道。別名已配置,TCP 和埠在防火牆中打開,一切順利且正常工作。所有 SQL 服務也在執行。

伺服器 A 是發布者,伺服器 B 是訂閱者。

它一直在使用推送訂閱,所以一切都在伺服器 A 上執行。

所有數據都已同步,一切都很好。

在伺服器 A 上出現伺服器問題後,數據庫名稱發生了變化,重新創建了複製和發布,並且伺服器 A 升級到了 SQL Server 2008 R2 SP3。

到目前為止,這是兩者之間唯一明顯的區別,發布者執行的是 SQL 10.50.6000.34,而訂閱者執行的是 10.50.2500.0。

現在複製停止工作,我無法通過命名管道連接兩者..

如果我嘗試從任一伺服器創建新訂閱並使用伺服器名稱(對於複製,您需要使用伺服器名稱而不是 TCP)我不斷收到命名管道錯誤

命名管道錯誤

我可以從另一台伺服器 ping 每個伺服器。我可以使用帶有域或 ip 的 tcp 從 SQL Management Studio 連接,並在另一台伺服器上執行查詢。我可以將它們添加為連結伺服器並查看數據。

但是當我去創建新訂閱並添加遠端訂閱者時,我得到了命名管道錯誤。

我終於設法連接了兩台伺服器!

事實證明,即使兩台伺服器都是 x64 並且執行 64 位作業系統和 SQL Server 64 位,它也需要在 64 位和 32 位本機客戶端別名上配置別名。

一旦我為 32 位驅動程序配置了一個,它就可以工作了。

確實如此,我認為原因是,當您使用 64 位版本的 SQL Server 時,該程序在 64 位下工作,但是像 SSMS 這樣的大多數工具都在 32 位模式下工作,這就是您需要為 64 位別名的原因本機客戶端配置中的 32 位。

引用自:https://dba.stackexchange.com/questions/119028