Sql Server复制需要实际的服务器名称才能建立与服务器的连接

Vah*_*iri 36 sql-server sql-server-2008-r2

当我想要创建新的发布或订阅时,我收到以下消息.

"Sql Server复制需要实际的服务器名称才能与服务器建立连接.不支持通过服务器别名,IP地址或任何其他备用名称进行连接.请指定实际的服务器名称"

有谁知道我该怎么办?

Vah*_*iri 46

我在以下链接中找到了解决方案http://www.cryer.co.uk/brian/sqlserver/replication_requires_actual_server_name.htm

感谢Brian Cryer的有用网站

引用链接以避免链接腐烂:

原因:

在原始安装SQL Server之后重命名的服务器上已观察到此错误,并且SQL Server配置函数@@SERVERNAME仍返回服务器的原始名称.这可以通过以下方式确认:

select @@SERVERNAME
go
Run Code Online (Sandbox Code Playgroud)

这应该返回服务器的名称.如果没有,请按照以下步骤进行更正.

补救:

要解决此问题,需要更新服务器名称.使用以下内容:

sp_addserver 'real-server-name', LOCAL
Run Code Online (Sandbox Code Playgroud)

如果这给出了一个错误,抱怨该名称已经存在,那么使用以下序列:

sp_dropserver 'real-server-name'
go

sp_addserver 'real-server-name', LOCAL
go
Run Code Online (Sandbox Code Playgroud)

相反,报告的错误是"已经存在本地服务器".然后使用以下顺序:

sp_dropserver old-server-name
go

sp_addserver real-server-name, LOCAL
go
Run Code Online (Sandbox Code Playgroud)

其中"old-server-name"是原始错误正文中包含的名称.

停止并重新启动SQL Server.


小智 31

还有另一种解决这个问题,这并不需要**sp_dropserver**,**sp_addserver**或者服务器重新启动.

脚步:

  1. 阅读错误消息并记住引号中的SERVERNAME.
  2. 在安装了Management Studio的计算机上运行Sql Server Configuration Manager(通常是发布者/分发者方);
  3. 展开Sql Native 10.0 Configuration\Aliases节点;
  4. 1创建名为SERVERNAME的新别名.对于命名实例,它应该是NetBIOS计算机名称或NetBIOS \ instance_name.
  5. 指定别名的其他选项(端口,服务器和协议).
  6. 对32位本机客户端重复45.
  7. 测试.在同一台计算机上运行Management Studio并尝试连接到服务器(将别名指定为服务器名称).

  8. (可选)对于将使用Management Studio进行复制设置的所有客户端计算机,重复2 - 7.

就这样!


an3*_*nto 7

另一种解决方案是使用 SQL Server Management Studio 的附加参数来连接到该数据库。

为此,连接时,服务器名称将是您通过@@servername查询得到的服务器名称(或者错误消息提示您的名称),然后选择“选项>>”按钮

选择选项 >> 按钮

然后,在附加连接参数选项卡中,您可以添加数据库的当前名称

在此输入图像描述

编辑:

但是,当您只能选择运行时,例如。Linux容器使用IP侦听器,那么你需要设置服务器名称,select @@servername然后设置SERVER='tcp:,',就像Shadman评论所说的那样。它会欺骗使用服务器名称连接到 IP。

  • 这会导致连接错误“建立与 SQL Server 的连接时发生网络相关或特定于实例的错误。...(提供程序:命名管道提供程序,错误:40 ...)”。我可以在没有“SERVER='xxx'”参数的情况下连接到该服务器。我正在远程连接,我还应该注意到这些查询`SELECT SERVERPROPERTY('MachineName')`和`SELECT @@SERVERNAME`都返回相同的字符串 (2认同)
  • 我将主机名的别名添加到 IP 地址。最初我使用 ip 地址作为主机名 (2认同)
  • 这个方法对我有用,但我必须提到,在**服务器名称**中粘贴“SELECT SERVERPROPERTY(N'servername')”或“SELECT @@SERVERNAME”的结果,并在**其他连接参数**中添加一些内容像这样“SERVER=tcp:192.168.1.1,1433;”。感谢@an3sarmiento (2认同)

Chr*_*ckx 5

简短回答:检查您是否通过SSMS连接错误的网络别名

例如,您的服务器可以同时访问:

  • MyDataServer
  • MyDataServer.Company.Com

创建复制发布/订阅时,它会与当时用于连接服务器的名称相关联,如果使用不同的别名或完全限定名称进行连接,则会为您提供问题所述的错误.

详细信息:我刚刚遇到这个问题,关于更改@@ servername的答案帮助我理解了这个问题,但我不必这样做.

考虑一下:

sql server框设置为{my_system_name} .local.domain

在我们的网络中,我们有一个网络别名,{my_system_alias}允许我们到达服务器并避免输入完全限定的域名(FQDN).

安装了Sql Server,并在使用{my_system_alias}名称连接时设置了本地复制发布.

然后我使用指定FQDN的SSMS连接到服务器,如果我右键单击此现有复制的属性 - >本地发布我得到错误:"Sql Server复制需要实际的服务器名称".

我所要做的就是:使用别名(或其他方式)重新连接到SSMS中的服务器,这样我就可以看到复制发布的详细信息.

PS:Phill在另一个答案中的评论也是另一种选择,使得主机文件条目与您需要用于连接的名称相匹配.