【无标题】

1 环境说明
操作系统:Windows Server 2016 standard\Windows10
数据库版本:SQLSERVER2019 15.0.2000.5\SQLSERVER2016 13.0.5026
2 搭建过程
2.1 下载DM安装包(windows版本的安装包)
产品下载 | 达梦数据库 (dameng.com)

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

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

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

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

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

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

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组用户,能解决以上报错。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值