【达梦数据库】dblink毗连[SqlServer/Mysql]报错处置惩罚
背景需要利用dblink功能毗连SqlServer/Mysql数据库,在测试时有好几种报错,纪录供参考。
题目1:无法测试以ODBC数据源方式访问的外部链接!
在达梦管理工具图形化测试公共外部链接时,报错:无法测试以ODBC数据源方式访问的外部链接!
https://i-blog.csdnimg.cn/direct/0561e7b451c9446abed248b0eda57274.png
题目分析&原因
ODBC类型的外部公共链接没有图形化测试功能
解决方法
直接利用dblink查远端表测试
题目2:DBLINK毗连丢失
利用dblink查MYSQL远端表测试,报错:DBLINK毗连丢失
https://i-blog.csdnimg.cn/direct/c5fca0470a96400da2e16c2e0525d6e8.png
题目分析&原因
查看数据库日记,报错:Can not open lib /usrlib64/libmyodbc5.so
https://i-blog.csdnimg.cn/direct/589c7b4f93ca4cc69970956f6a459cda.png
手动查找libmyodbc5.so:find / -name libmyodbc5.so,找不到,但是可以找到libmyodbc5w.so
https://i-blog.csdnimg.cn/direct/2f4e7c61d2e743589af0445afbaa9fee.png
通过排查,原因是找不到/usrlib64/libmyodbc5.so
解决方法
创建软毗连:ln -s /usr/local/mysql-odbc/lib/libmyodbc5w.so /usrlib64/libmyodbc5.so
https://i-blog.csdnimg.cn/direct/797277405f73497dab751f6cb24d88e5.png
再次利用dblink查远端表测试,无报错,题目解决
https://i-blog.csdnimg.cn/direct/bdd4100f003e4092a985219803fe089e.png
题目3:DBIINK远程服务器获取对象失败,错误洋情[Could not find stored procedure ‘xxx’.]
利用dblink查SqlServer远端表测试,报错:DBIINK远程服务器获取对象失败,错误洋情[Could not find stored procedure ‘xxx’.]
https://i-blog.csdnimg.cn/direct/963a620c96614e00bac894ea1b488647.png
题目分析&原因
查看数据库日记,报错:Could not find stored procedure ‘xxx’.]
https://i-blog.csdnimg.cn/direct/e487bf1bfc0e4be3b617877f37eee0f3.png
利用isql -v 毗连名毗连SQLServer,毗连不上(参考链接: Java ODBC毗连SqlServer,FreeTDS/jtds 毗连SqlServer)报错:Unable to connect to data source]
https://i-blog.csdnimg.cn/direct/17416cbe0c954016a8de6ec14562bdfd.png
通过排查:操作系统找驱动配置文件odbcinst.ini和数据源DSN配置文件odbc.ini都默认找/etc目录下的,而原来安装在/usr/local/etc目录下
解决方法
把odbcinst.ini和odbc.ini文件拷贝到/etc目录下即可
https://i-blog.csdnimg.cn/direct/7f409dc762694088903d958bca59e9a8.png
参考链接
参考链接: 配置达梦dblink到sqlserver2012出现毗连异常
参考链接: DM->DM通过ODBC方式创建DBLINK,报错DBLINK毗连丢失
参考链接: 【有道云笔记】达梦与sqlserver之间dblink创建
参考链接: Java ODBC毗连SqlServer,FreeTDS/jtds 毗连SqlServer
题目4:远程操作符执行失败,错误详情[
利用dblink查SqlServer远端表测试,报错:远程操作符执行失败,错误详情[ ,此类题目又分为两种情况:
[*]情况1:应用端执行报错,数据库端执行不报错
[*]情况2:应用端和数据库端执行均报错。
情况1:应用端执行报错,数据库端执行不报错
题目分析&原因
官方解释:管理工具默认只取前100行数据,假如超过100行,又未获取全部数据,再次执行报错无效的游标状态
https://i-blog.csdnimg.cn/direct/94edcbc52d5d44b5af64c49c8c5312ea.png
解决方法
每次获取全部数据,大概加top 取前几行等
情况2:应用端和数据库端执行均报错。
题目分析&原因
[*]大部门报错集中出现在 情况1:应用端执行报错,数据库端执行不报错,但是也有少量dblink查询会出现情况2:应用端和数据库端执行均报错
[*]更有意思的是,在测试环境中不会出现这样的题目,而在正式环境中出现了,正式环境和测试环境数据库版本&驱动版本均同等
严重怀疑是否和哪个参数有关系?比对测试环境和正式环境的dm.ini文件,还真找到一个:
https://i-blog.csdnimg.cn/direct/8584e3b7d9144f46895a4e52dba82637.png
通过hint提示拼接SQL:
select/*+ DBLINK_OPT_FLAG(509)*/
字段1,字段2
from 表1
where 条件1
and 条件2;
重新在应用端和数据库端执行,不会出现报错
解决方法
因为此参数为动态参数,执行执行下令修改:
SP_SET_PARA_VALUE (1,'DBLINK_OPT_FLAG',509);
https://i-blog.csdnimg.cn/direct/c311353b22524c65bee70ad68edb35dc.png
再次利用dblink查远端表测试,无报错,题目解决
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]