我已经从linux sql server 2017成功添加,链接和查询了其他sql服务器, 但仅限于默认实例名称。 (没有实例名称)
我无法连接任何其他名为servers的特定实例。 (从Windows sql server2016可以。) 看起来反斜杠+实例名称被视为空洞主机名! 我尝试使用双//,\ \或/ ...
这是一个已知问题还是我做错了什么?
我在Windows 8.1 Pro上有SSMS 14.0.17119.0,
Microsoft SQL Server 2017(CTP2.1) - 14.0.600.250(X64) 2017年5月10日12:21:23 版权所有(C)2017 Microsoft Corporation。版权所有。 Linux上的Developer Edition(64位)(Ubuntu 17.04)
我尝试使用SSMS上的用户界面和T-SQL 执行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)
答案 0 :(得分:3)
我有同样的问题。幸运的是,在我的情况下,链接的实例已经设置为侦听另一个静态tcp端口。所以我可以将其作为一种解决方法。
如果您必须选择更改要链接的服务器,可以在 SQL Server配置管理器中设置tcp端口 - 网络配置 - 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='##########'
答案 1 :(得分:1)
当您尝试连接 SQLEXPRESS 时,通常会将端口设置为随机。在我的实例中设置为 61423 。要验证服务器上的端口号,您可以执行以下操作:
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'