注册
Windows环境下SQLSERVER到DM的dblink搭建及问题分析
专栏/技术分享/ 文章详情 /

Windows环境下SQLSERVER到DM的dblink搭建及问题分析

Paige 2022/11/11 2032 1 0
摘要

1 环境说明

操作系统:Windows Server 2016 standard\Windows10
数据库版本:SQLSERVER2019 15.0.2000.5\SQLSERVER2016 13.0.5026

2 搭建过程

2.1 下载DM安装包(windows版本的安装包)

达梦安装包下载地址
image.png

2.2 安装达梦服务

如果只是创建dblink(只需要用达梦odbc相关驱动包),可选择自定义安装,可只安装驱动,当前演示安装目录在F:/dmdbms
image.png

2.3 安装完毕后,打开odbc数据源管理程序,可以在驱动程序栏看到DM驱动

image.png

2.4 将达梦bin目录授权给everyone组

说明:如果是Windows Server 2016 standard+SQLSERVER2019 15.0.2000.5
将bin目录授权给SQLSERVER服务启动用户组或者all application packages相应权限也可以
image.png

2.5 通过odbc数据源管理程序,创建相关的数据源


image.png
image.png

2.6 创建完数据源后,在注册表中可查到刚才创建的数据源注册信息

image.png

2.7 使用sqlserver管理工具创建到达梦的dblink

image.png

3 测试dblink是否可用

--在达梦端创建测试表及数据
Create table test(a int);
Insert into test values(1);
--在sqlserver端使用dblink查询test表
Select * from openquery(DM,'select * from test')

4 异常处理

4.1 Microsoft SQL Server, Error: 7303

报错类型1:无法初始化链接服务器“DM”的 OLE DB 访问接口“MSDASQL”的数据源对象。由于系统错误 5: 拒绝访问。 (DM8 ODBC DRIVER, F:\dmdbms\bin\dodbc.dll),指定驱动程序无法加载。Microsoft SQL Server, Error: 7303

报错类型2:无法初始化链接服务器“DM”的 OLE DB 访问接口“MSDASQL”的数据源对象。
链接服务器"DM"的 OLE DB 访问接口 “MSDASQL” 返回了消息 “由于系统错误 126: 找不到指定的模块。 (DM8 ODBC DRIVER, F:\dmdbms\bin\dodbc.dll),指定驱动程序无法加载。”。 (Microsoft SQL Server, Error: 7303)

错误理解:F:\dmdbms\bin\dodbc.dll文件实际是存在,5: 拒绝访问说明是权限问题,将文件权限分配给everyone后,报错变成126: 找不到指定的模块,猜测是这个dll文件可能有其它依赖文件没有相关的权限,所以将整个bin目录权限分配给everyone,而不是单个文件,分配后再执行正常

疑问:为什么odbc测试连接的时候可以成功,dblink会报错。
因为odbc是以当前操作的系统用户权限访问的,当前操作的系统用户有执行权限,所以能成功;sqlserver创建dblink 底层是通过哪个操作系统用户访问的,这个不确定,所以需要将达梦数据库bin目录读和可执行权限授予everyone组用户,能解决以上报错。

image.png
image.png

4.2 Microsoft SQL Server, Error: 7399

无法初始化链接服务器“DM”的 OLE DB 访问接口“SQLNCLI11”的数据源对象。
链接服务器"DM"的 OLE DB 访问接口 “SQLNCLI11” 返回了消息 “Invalid authorization specification”。 (Microsoft SQL Server, Error: 7399)

创建的dblink所选择的连接驱动不对,应该选” Microsft OLE DB Provider for ODBC Driver

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服