千家信息网

Linux系统下的SQL Server不支持其他类型数据源的链接服务器

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,客户需求:一台Ubuntu服务器,安装SQL Server 2017数据库,作为中间服务器,通过SQL Server的链接服务器方式,连接各业务系统的相关数据库。问题:有一个系统的数据库采用的是Ora
千家信息网最后更新 2026年11月02日Linux系统下的SQL Server不支持其他类型数据源的链接服务器

客户需求:一台Ubuntu服务器,安装SQL Server 2017数据库,作为中间服务器,通过SQL Server的链接服务器方式,连接各业务系统的相关数据库。

问题:有一个系统的数据库采用的是Oracle数据库,创建了链接服务器后,在引用时报" 尚未注册OLD DB访问接口 OraOLEDB.Oracle "错误。

亲自测试,首先通过GUI方式创建链接服务器,目标服务器类型只能选择"SQL Server","其他数据源"选项是灰色不可选状态。

询问客户系统中的链接服务器创建方式,告知是通过SQL命令创建的。

USE [master]

GO

EXEC master.dbo.sp_addlinkedserver

@server = N'OracleData'

, @srvproduct=N'ORACLE'

, @provider=N'OraOLEDB.Oracle'

, @datasrc=N'TNS_NAME'

EXEC master.dbo.sp_addlinkedsrvlogin

@rmtsrvname= N'OracleData', @useself=N'False', @locallogin=NULL

, @rmtuser=N'OraUser', @rmtpassword='OraPassword'

GO

select * from OracleData..OraUser.UserTable

go

消息 7403,级别 16,状态 1,第 1 行

尚未注册 OLE DB 访问接口 "OraOLEDB.Oracle"。

按照Windows系统下的习惯思路,只要安装Oracle数据库的相应驱动就能解决问题。

首先安装Oracle客户端程序和工具,具体操作见前文:

http://blog.itpub.net/81227/viewspace-2668066/

通过sqlplus工具测试,可以连接上Oracle数据库。

测试链接服务器,还是报原来的错误。

通过直接方式不能解决问题,那是否能通过ODBC方式解决问题呢?虽然ODBC要比直接方式效率要低,性能要差,但能解决问题总归是好的。

安装unixODBC方法,参见:

http://blog.itpub.net/81227/viewspace-2668511/

通过isql工具测试,同样连接上了Oracle数据库。

再次测试链接服务器,问题依旧。

不能解决问题,总要给客户一个交待的,不然就显得自己太不专业了。

只能从MicroSoft的官方文档中找答案。

终于,在MicroSoft的一篇名为"Editions and supported features of SQL Server 2017 on Linux"的文档( https://docs.microsoft.com/en-us/sql/linux/sql-server-linux -editions-and-components-2017?view=sql-server-ver15 ) 中找到了答案, Linked Servers to data sources other than SQL Server (Linux 版本的SQL Server 2017不支持除SQL Server外的其他数据源的链接服务器)。

总算能给客户一个交待了。

其实,到目前为止,Linux版本的SQL Server 2019也同样不支持。不过,在SQL Server 2019中,提供了另一种称为PolyBase的技术解决了在SQL Server中访问其他类型数据源的问题。

坑1:通过SQL命令方式执行创建链接服务器时,不检查数据源类型的合法性;

USE [master]

GO

EXEC master.dbo.sp_addlinkedserver

@server = N'OracleData1'

, @srvproduct=N'ORACLE'

, @provider=N'unixODBC'

, @datasrc=N'DSN_NAME'

EXEC master.dbo.sp_addlinkedsrvlogin

@rmtsrvname= N'OracleData', @useself=N'False', @locallogin=NULL

, @rmtuser=N'OraUser', @rmtpassword='OraPassword'

GO

USE [master]

GO

EXEC master.dbo.sp_addlinkedserver

@server = N'OracleData2'

, @srvproduct=N'ORACLE'

, @provider=N'MSDASQL'

, @datasrc=N'TNS_NAME'

EXEC master.dbo.sp_addlinkedsrvlogin

@rmtsrvname= N'OracleData', @useself=N'False', @locallogin=NULL

, @rmtuser=N'OraUser', @rmtpassword='OraPassword'

GO

数据源类型无论改成何种类型,创建时均不报错,链接服务器创建成功。

坑2:系统不支持其他类型的数据源,但错误提示却是"访问接口未注册",而不是明确提示系统不支持此类型数据源;

select * from OracleData1..OraUser.UserTable

go

消息 7403,级别 16,状态 1,第 1 行

尚未注册 OLE DB 访问接口 "unixODBC"。

select * from OracleData2..OraUser.UserTable

go

消息 7403,级别 16,状态 1,第 1 行

尚未注册 OLE DB 访问接口 "MSDASQL"。

数据 服务器 服务 链接 问题 数据源 类型 数据库 方式 系统 客户 接口 测试 支持 尚未 状态 工具 消息 级别 错误 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 湖北九亚互联网络科技有限公司 百单网互联网科技有限公司怎么样 湖南永感互联网科技有限公司 互联网科技保险 互联网科技会 互联网巨头反垄断金融科技 壹账通互联网科技 奇士达互联网科技 广西互联网科技公司 顺玮阁互联网科技 猫创互联网科技 湖南诚度互联网科技有限公司 996高科技互联网公司 元气玛特互联网科技公司是外包吗 从那以后互联网科技有限公司 数字互联网科技有限公司 长沙易易互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司 科技发展第三阶段互联网时代 南京欣网互联网络科技有限公司 科技互联网项目 百单互联网科技有限公司 汇久创客互联网科技 哈尔滨秒房互联网科技有限公司 互联网教育科技公司vipkid 世界互联网科技公司市值排名 2021互联网科技公司排名 长沙渺峰互联网科技有限公司 求路客互联网科技电话
0