我正在尝试在新的 SQL 2019 安装上设置复制,但我遇到了 catch-22 错误。
我有两 (2) 个命名实例并排设置,每个设置为一个集群角色。集群角色名称,我们称之为:
toolsdb
catdb
安装后,如果我分别在toolsdb
和上运行catdb
:
select @@SERVERNAME as ServerName, SERVERPROPERTY('ServerName') as ServerProp
...他们回来了:
服务器名称 | 服务器属性 |
---|---|
工具数据库\工具 | 工具数据库\工具 |
服务器名称 | 服务器属性 |
---|---|
CATDB\CAT | CATDB\CAT |
我遇到的问题发生在任一实例上,但我们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 ://learn.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,数据集 fillDataSet,布尔 catchException)在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(字符串 sqlCommand,ExecutionTypes executionType,布尔重试)
...看来@@SERVERNAME
函数返回的值需要与实例名称匹配,例如 - TOOLSDB\TOOLS
,但我无法在将其设置为该值的情况下启动向导。
有任何想法吗?
谢谢你。