不能 link 其他 sql 服务器从 linux 到命名实例
cannot link other sql server from linux to a named instance
我已成功添加、链接和查询来自 linux sql 服务器 2017 的其他 sql 服务器,
但仅使用默认实例名称。 (无实例名称)
我无法连接任何其他特定实例命名服务器。
(从 windows sql server2016 没问题)。
看起来反斜杠+实例名称被认为是主机名!?
我尝试使用双 //、\ \ 或 / ...
这是一个已知问题还是我做错了什么?
我在 Windows 8.1 Pro 上安装了 SSMS 14.0.17119.0,
微软 SQL 服务器 2017 (CTP2.1) - 14.0.600.250 (X64)
2017 年 5 月 10 日 12:21:23
版权所有 (C) 2017 Microsoft Corporation。版权所有。
Linux (Ubuntu 17.04)
开发者版(64 位)
我尝试在 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)
我遇到了同样的问题。幸运的是,在我的例子中,链接实例已设置为侦听另一个静态 tcp 端口。所以我可以用它作为解决方法。
如果您必须选择更改链接到的服务器,您可以在 SQL 服务器配置管理器 - 网络配置 - INST2 协议 - [=19] 中设置 tcp 端口=] - 属性 - 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='##########'
当您尝试连接到 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'
我已成功添加、链接和查询来自 linux sql 服务器 2017 的其他 sql 服务器, 但仅使用默认实例名称。 (无实例名称)
我无法连接任何其他特定实例命名服务器。 (从 windows sql server2016 没问题)。 看起来反斜杠+实例名称被认为是主机名!? 我尝试使用双 //、\ \ 或 / ...
这是一个已知问题还是我做错了什么?
我在 Windows 8.1 Pro 上安装了 SSMS 14.0.17119.0,
微软 SQL 服务器 2017 (CTP2.1) - 14.0.600.250 (X64) 2017 年 5 月 10 日 12:21:23 版权所有 (C) 2017 Microsoft Corporation。版权所有。 Linux (Ubuntu 17.04)
开发者版(64 位)我尝试在 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)
我遇到了同样的问题。幸运的是,在我的例子中,链接实例已设置为侦听另一个静态 tcp 端口。所以我可以用它作为解决方法。
如果您必须选择更改链接到的服务器,您可以在 SQL 服务器配置管理器 - 网络配置 - INST2 协议 - [=19] 中设置 tcp 端口=] - 属性 - 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='##########'
当您尝试连接到 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'