幫助從 Always On 可用性組進行複制
我有一個兩節點 SQL Server 2016 多子網可用性組。我正在嘗試設置從 AG 到獨立實例的跨國複製以進行報告,該實例也充當遠端分發者。我們只需要一小部分錶,因此無法選擇將獨立實例添加為第三個副本。
我已按照Microsoft 指南進行配置。我已經執行了
EXEC sys.sp_redirect_publisher
,當我執行EXEC sys.sp_validate_replica_hosts_as_publishers
它時,它會返回 AG 偵聽器。但是,當我們對 AG 進行故障轉移時,複製將停止工作,並在複製監視器中報告以下錯誤錯誤消息:無法查詢原始發布者“PUB1”和發布者數據庫“AlwaysOnTest”的重定向伺服器“AGL”以確定遠端伺服器的名稱;錯誤 7303,錯誤消息“錯誤 7303,級別 16,狀態 1,消息:無法為連結伺服器初始化 OLE DB 提供程序“SQLNCLI11”的數據源對象“
$$ B66E8E27-E422-41DB-BBBC-254D450468D7 $$“。”。(來源:MSSQL_REPL,錯誤號:MSSQL_REPL21879)獲取幫助:http://help/MSSQL_REPL21879 驗證重定向發布者時記錄了錯誤。(來源:MSSQL_REPL,錯誤號:MSSQL_REPL22037)獲取幫助:http://幫助/MSSQL_REPL22037
我檢查並嘗試過的幾件事
- 訂閱者的已檢查連結伺服器存在於所有輔助副本主機上。
- 基於此,使用 sp_changedistpublisher 將安全模式切換為 SQL auth。
如果我在分發伺服器上重新執行 AG 故障轉移,
EXEC sys.sp_validate_replica_hosts_as_publishers
它會返回無法在與虛擬網路名稱“AGL”關聯的可用性組主節點上查詢 sys.availability_replicas 以獲取成員副本的伺服器名稱:錯誤 = 7303,錯誤消息 = 錯誤 7303,級別 16,狀態 1,消息:無法初始化數據連結伺服器的 OLE DB 提供程序“SQLNCLI11”的源對象“
$$ 7A7DA613-BFDA-4C51-B62C-9C7CD94E769E $$“..”,
我被卡住了下一步該嘗試什麼….請幫助!!!
2020 年 16 月 6 日更新
當 AG 發生故障轉移時,我嘗試從遠端分發伺服器連接到 AG 偵聽器。SSMS 連接正常,但是當我嘗試使用 SQLCMD 連接時,它返回了一個錯誤。我也可以繞過偵聽器直接從分發伺服器連接到故障轉移實例。
Sqlcmd:錯誤:Microsoft ODBC Driver 13 for SQL Server:命名管道提供程序:無法打開與 SQL Server 2的連接。. Sqlcmd:錯誤:Microsoft ODBC Driver 13 for SQL Server:登錄超時已過期。Sqlcmd:錯誤:Microsoft ODBC Driver 13 for SQL Server:建立與 SQL Server 的連接時發生與網路相關或特定於實例的錯誤。伺服器未找到或無法訪問。檢查實例名稱是否正確以及 SQL Server 是否配置為允許遠端連接。有關詳細資訊,請參閱 SQL Server 聯機叢書。
其根本原因是連接超時,因為可用性組位於多子網可用性組中。這已通過遵循Microsoft的此文件得到解決。