MS SQL 中的 Sybase 链接服务器连接失败但 ODBC 测试连接成功
Sybase Linked Server in MS SQL failes to connect but ODBC Test connection succeeded
在我们的数据库服务器中,我们安装了以下版本的 Microsoft SQL:
Microsoft SQL Server 2016 (SP2-CU2-GDR) (KB4458621) - 13.0.5201.2
(X64) Aug 18 2018 07:38:15 Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows Server
2012 R2 Standard 6.3 (Build 9600: ) (Hypervisor)
在同一台服务器上,我们还安装了
Sybase 16 Driver
使用 Adaptive Server Enterprise,我们创建了 ODBC 64 位连接(因为 MS SQL 是 64 位的)并在测试连接后,提示显示连接和凭据都很好。
然后我使用以下脚本在 MS SQL 中创建了一个链接服务器
当然不是证书的实际值
DECLARE @ls_servername varchar(128) = N'SybaseSERVER'
DECLARE @ls_serverproduct varchar(128) = N'sybase'
DECLARE @ls_provider varchar(128) = N'MSDASQL'
DECLARE @ls_datasource varchar(128) = N'SybaseSERVER'
DECLARE @ls_catalog varchar(128) = N'TestDB'
DECLARE @ls_providerstr varchar(max) = NULL
DECLARE @ls_username varchar(128) = N'*TestUser*'
DECLARE @ls_password varchar(128) = N'*TestPass*'
--Add linked server
EXEC sp_addlinkedserver
@server=@ls_servername
,@srvproduct=@ls_serverproduct
,@provider=@ls_provider
,@datasrc=@ls_datasource
,@catalog=@ls_catalog
,@provstr=@ls_providerstr
--Add credentials
EXEC sp_addlinkedsrvlogin
@rmtsrvname=@ls_servername
,@useself=N'False'
,@rmtuser=@ls_username
,@rmtpassword=@ls_password
GO
使用上面的设置,我能够在我们的 DEV 数据库服务器中成功查询
SELECT * 来自 SybaseSERVER.TestDB.dbo.SampleTable
但是,在暂存数据库服务器中使用相同的设置时,我遇到了一个错误:
OLD DB provider "MSDASQL" for linked server "SybaseSERVER" returned message "[SAP][ASE ODBC Driver]Client unable to establish a connection".
但是测试连接时ODBC 64位连接显示成功。
我已经检查了安装程序,我确信它们在安装 MS SQL 和 Sybase 驱动程序方面是相同的。检查两者时,PATH 环境变量差别不大。
临时服务器出现问题的可能原因是什么?可能的解决方案是什么?
这就是我们的 DBA 所做的工作
- 将远程访问设置为 1(config_value 和 run_value)
- 重新启动 SQL 服务。
我不确定第 1 点是否已连接,但根据我们的 DBA 的说法,他就是这样做的。
但就目前而言,这是我们的第一个行动,以防我们在其他服务器上再次遇到该问题。
在我们的数据库服务器中,我们安装了以下版本的 Microsoft SQL:
Microsoft SQL Server 2016 (SP2-CU2-GDR) (KB4458621) - 13.0.5201.2 (X64) Aug 18 2018 07:38:15 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Standard 6.3 (Build 9600: ) (Hypervisor)
在同一台服务器上,我们还安装了 Sybase 16 Driver
使用 Adaptive Server Enterprise,我们创建了 ODBC 64 位连接(因为 MS SQL 是 64 位的)并在测试连接后,提示显示连接和凭据都很好。
然后我使用以下脚本在 MS SQL 中创建了一个链接服务器
当然不是证书的实际值
DECLARE @ls_servername varchar(128) = N'SybaseSERVER'
DECLARE @ls_serverproduct varchar(128) = N'sybase'
DECLARE @ls_provider varchar(128) = N'MSDASQL'
DECLARE @ls_datasource varchar(128) = N'SybaseSERVER'
DECLARE @ls_catalog varchar(128) = N'TestDB'
DECLARE @ls_providerstr varchar(max) = NULL
DECLARE @ls_username varchar(128) = N'*TestUser*'
DECLARE @ls_password varchar(128) = N'*TestPass*'
--Add linked server
EXEC sp_addlinkedserver
@server=@ls_servername
,@srvproduct=@ls_serverproduct
,@provider=@ls_provider
,@datasrc=@ls_datasource
,@catalog=@ls_catalog
,@provstr=@ls_providerstr
--Add credentials
EXEC sp_addlinkedsrvlogin
@rmtsrvname=@ls_servername
,@useself=N'False'
,@rmtuser=@ls_username
,@rmtpassword=@ls_password
GO
使用上面的设置,我能够在我们的 DEV 数据库服务器中成功查询 SELECT * 来自 SybaseSERVER.TestDB.dbo.SampleTable
但是,在暂存数据库服务器中使用相同的设置时,我遇到了一个错误:
OLD DB provider "MSDASQL" for linked server "SybaseSERVER" returned message "[SAP][ASE ODBC Driver]Client unable to establish a connection".
但是测试连接时ODBC 64位连接显示成功。
我已经检查了安装程序,我确信它们在安装 MS SQL 和 Sybase 驱动程序方面是相同的。检查两者时,PATH 环境变量差别不大。
临时服务器出现问题的可能原因是什么?可能的解决方案是什么?
这就是我们的 DBA 所做的工作
- 将远程访问设置为 1(config_value 和 run_value)
- 重新启动 SQL 服务。
我不确定第 1 点是否已连接,但根据我们的 DBA 的说法,他就是这样做的。 但就目前而言,这是我们的第一个行动,以防我们在其他服务器上再次遇到该问题。