Sql-Server

故障轉移群集命名實例上的配置複製嚮導中的 Catch-22 錯誤

  • August 17, 2022

我正在嘗試在新的 SQL 2019 安裝上設置複製,但我遇到了 catch-22 錯誤。

我有兩 (2) 個命名實例並排設置,每個設置為一個集群角色。集群角色名稱,我們稱之為:

toolsdb
catdb

安裝後,如果我分別在toolsdb和上執行catdb

select @@SERVERNAME as ServerName, SERVERPROPERTY('ServerName') as ServerProp

…他們回來了:

我遇到的問題發生在任一實例上,但我們toolsdb現在將使用。當我右鍵點擊複製 > 配置分發時,我得到:

====================================

SQL Server 無法連接到伺服器“toolsdb”。(配置分發嚮導)

—————————— 如需幫助,請點擊:https ://go.microsoft.com:80/fwlink?ProdName =Microsoft%20SQL%20Server&ProdVer=15.0.18410.0&EvtSrc=Microsoft.SqlServer.Management.UI.ConfigureWizardErrorSR&EvtID=CantConnect&LinkId=20476

====================================

SQL Server 複製需要實際的伺服器名稱才能連接到伺服器。指定實際的伺服器名稱,’’。(複製。實用程序)

—————————— 節目地點:

在 Microsoft.SqlServer.Management.UI.ReplicationSqlConnection.CheckServerAlias(ServerConnection conn) 在 Microsoft.SqlServer.Management.UI.ReplicationSqlConnection.Open()

在 Microsoft.SqlServer.Management.UI.ConfigureDistributionWizard.PrepareToShow()

對此的解決方法是讓@@SERVERNAME函式返回的值與集群角色名稱匹配,使用:

sp_dropserver 'TOOLSDB\TOOLS'
go

sp_addserver 'TOOLSDB', LOCAL
go

一旦我重新啟動角色/服務,然後再次執行它:

select @@SERVERNAME as ServerName, SERVERPROPERTY('ServerName') as ServerProp

…它現在按預期返回:

…並且我能夠繼續進行複制設置。但是,一旦我完成了配置分發嚮導步驟並點擊完成,“配置分發器”操作就會出錯:

====================================

SQL Server 無法將“toolsdb”配置為分發伺服器。(Microsoft.SqlServer.ConnectionInfo)

====================================

執行 Transact-SQL 語句或批處理時發生異常。(Microsoft.SqlServer.ConnectionInfo)

—————————— 節目地點:

在 Microsoft.SqlServer.Replication.ReplicationObject.ExecCommand(String commandIn) 在 Microsoft.SqlServer.Replication.ReplicationServer.InstallDistributor(字元串密碼, DistributionDatabase distributionDB) 在 Microsoft.SqlServer.Management.UI.ReplicationSqlConnection.InstallDistributor(WizardInputs 輸入,Boolean bScripting) 在 Microsoft.SqlServer.Management.UI.ConfigureDistributionWizard.InstallDistributor(Boolean& anyExceptions, Boolean bScripting, ApplicationException& outerEx, StringBuilder 命令)

====================================

無法連接到伺服器“TOOLSDB\TOOLS”,因為“distributor_admin”未定義為伺服器上的遠端登錄。驗證您是否指定了正確的登錄名。. 將數據庫上下文更改為“主”。(.Net SqlClient 數據提供者)

—————————— 如需幫助,請點擊:https ://docs.microsoft.com/sql/relational-databases /errors-events/mssqlserver-18483-database-engine-error

—————————— 伺服器名稱:toolsdb 錯誤號:18483 嚴重性:14 狀態:1 行號:1

—————————— 節目地點:

在 Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction 操作,對象 execObject,DataSet fillDataSet,布爾 catchException)在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(字元串 sqlCommand,ExecutionTypes executionType,布爾重試)

從我讀過的研究中: https ://docs.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-18483-database-engine-error

…看來@@SERVERNAME函式返回的值需要與實例名稱匹配,例如 - TOOLSDB\TOOLS,但我無法在將其設置為該值的情況下啟動嚮導。

有任何想法嗎?

謝謝你。

聽起來您將 SQL Server 安裝為名為TOOLSDB\TOOLS. 複製要求您直接連接到命名實例(而不是預設名稱)以便能夠為該伺服器配置它,否則您收到的第一個錯誤“ SQL Server 無法連接到伺服器’toolsdb’。(配置分發嚮導) ”將出現。(我個人認為這可能是 SSMS 中的 Replication Wizard 的缺陷。)

要從您目前所在的位置開始,我將通過以下方式將命名實例放回您的伺服器列表中:

sp_dropserver ‘TOOLSDB’,本地去

sp_addserver ‘TOOLSDB\TOOLS’ 去

TOOLSDB\TOOLS然後斷開連接並使用 SSMS文本框中的全名重新連接到您的實例Server name。例如:

SSMS 登錄

請注意,上面範例中的完整命名實例是,HUNTERTOP7\SQLEXPRESS但對您來說,這將是TOOLSDB\TOOLS. 連接到完整的實例名稱後,複製嚮導應該可以為您工作。

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