无法将其他sql服务器从linux链接到命名实例

问题描述:

我已成功添加,链接和查询其他sql服务器从linux sql server 2017, ,但只能使用默认实例名称。 (无实例名称)无法将其他sql服务器从linux链接到命名实例

我无法连接任何名为servers的其他特定实例。 (从windows sql server2016可以)。 它看起来像反斜杠+实例名称被认为是洞主机名! 我尝试过双//,\ \或/ ...

是已知问题还是我做错了什么?

我SSMS 14.0.17119.0在Windows 8.1专业版,

的Microsoft SQL Server 2017年(CTP2.1) - 14.0.600.250(X64) 2017年5月10日十二时21分23秒 版权所有(C)2017年微软公司。版权所有。在Linux(Ubuntu的17.04) 开发版(64位)

我试图在SSMS用户inteface,并用T-SQL Exec的master.dbo.sp_addlinkedserver ...

,并收到此错误我相信的消息不是真正的错误:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo) 

------------------------------ 

SQL Server Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF]. 
OLE DB provider "SQLNCLI11" for linked server "SAGE-10\L1000" returned message "Login timeout expired". 
OLE DB provider "SQLNCLI11" for linked server "SAGE-10\L1000" returned message "A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.". (Microsoft SQL Server, Error: -1) 

当你试图连接到SQLEXPRESS常常端口设置为随机。在我的例子中设置为。例如

SELECT DISTINCT local_net_address, local_tcp_port FROM sys.dm_exec_connections 

然后:要在服务器验证的端口号,你可以做到这一点

EXEC master.dbo.sp_addlinkedserver @server = N'Server20_inst2', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'192.168.1.112,61423', @catalog=N'Test' 

我有同样的问题。幸运的是,在我的情况下,链接的实例已设置为侦听另一个静态TCP端口。所以我可以使用它作为解决方法。

如果您必须选择更改要链接的服务器,您可以在中设置tcp端口SQL Server配置管理器 - 网络配置 - INST2协议 - TCP/IP - 属性 - IP地址 - TCP端口。

之后,我可以像这样添加链接服务器。端口号为1435

EXEC master.dbo.sp_addlinkedserver @server = N'Server20_inst2', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'192.168.1.112,1435', @catalog=N'Test' 

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'Server20_inst2', @useself=N'False', @locallogin=NULL, @rmtuser=N'sa', @rmtpassword='##########'