故障轉移群集命名實例上的配置複製嚮導中的 Catch-22 錯誤
我正在嘗試在新的 SQL 2019 安裝上設置複製,但我遇到了 catch-22 錯誤。
我有兩 (2) 個命名實例並排設置,每個設置為一個集群角色。集群角色名稱,我們稱之為:
toolsdb catdb
安裝後,如果我分別在
toolsdb
和上執行catdb
:select @@SERVERNAME as ServerName, SERVERPROPERTY('ServerName') as ServerProp
…他們回來了:
我遇到的問題發生在任一實例上,但我們
toolsdb
現在將使用。當我右鍵點擊複製 > 配置分發時,我得到:====================================
SQL Server 無法連接到伺服器“toolsdb”。(配置分發嚮導)
====================================
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,布爾重試)
…看來
@@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
。例如:請注意,上面範例中的完整命名實例是,
HUNTERTOP7\SQLEXPRESS
但對您來說,這將是TOOLSDB\TOOLS
. 連接到完整的實例名稱後,複製嚮導應該可以為您工作。