【达梦数据库】dblink连接[SqlServer/Mysql]报错处理
- 游戏开发
- 2025-09-02 08:48:01
![【达梦数据库】dblink连接[SqlServer/Mysql]报错处理](/0pic/pp_19.jpg)
目录 背景问题1:无法测试以ODBC数据源方式访问的外部链接!问题分析&原因解决方法 问题2:DBLINK连接丢失问题分析&原因解决方法 问题3:DBIINK远程服务器获取对象[xxx]失败,错误洋情[[FreeTDS][SQL Server]Could not find stored procedure '`xxx`'.]问题分析&原因解决方法参考链接 问题4:远程操作符执行失败,错误详情[[FreeTDS] [SQLServerInvalid cursor state]情况1:应用端执行报错,数据库端执行不报错问题分析&原因解决方法 情况2:应用端和数据库端执行均报错。问题分析&原因解决方法 背景
需要使用dblink功能连接SqlServer/Mysql数据库,在测试时有好几种报错,记录供参考。
问题1:无法测试以ODBC数据源方式访问的外部链接!在达梦管理工具图形化测试公共外部链接时,报错:无法测试以ODBC数据源方式访问的外部链接!
问题分析&原因ODBC类型的外部公共链接没有图形化测试功能
解决方法直接使用dblink查远端表测试
问题2:DBLINK连接丢失使用dblink查MYSQL远端表测试,报错:DBLINK连接丢失
问题分析&原因查看数据库日志,报错:Can not open lib /usrlib64/libmyodbc5.so 手动查找libmyodbc5.so:find / -name libmyodbc5.so,找不到,但是可以找到libmyodbc5w.so 通过排查,原因是找不到/usrlib64/libmyodbc5.so
解决方法建立软连接:ln -s /usr/local/mysql-odbc/lib/libmyodbc5w.so /usrlib64/libmyodbc5.so 再次使用dblink查远端表测试,无报错,问题解决
问题3:DBIINK远程服务器获取对象[xxx]失败,错误洋情[[FreeTDS][SQL Server]Could not find stored procedure ‘xxx’.]使用dblink查SqlServer远端表测试,报错:DBIINK远程服务器获取对象[xxx]失败,错误洋情[[FreeTDS][SQL Server]Could not find stored procedure ‘xxx’.]
问题分析&原因查看数据库日志,报错:[FreeTDS][SQL Server]Could not find stored procedure ‘xxx’.] 使用isql -v 连接名连接SQLServer,连接不上(参考链接: Java ODBC连接SqlServer,FreeTDS/jtds 连接SqlServer)报错:[unixODBC][FreeTDS][SQL Server]Unable to connect to data source] 通过排查:操作系统找驱动配置文件odbcinst.ini和数据源DSN配置文件odbc.ini都默认找/etc目录下的,而原来安装在/usr/local/etc目录下
解决方法把odbcinst.ini和odbc.ini文件拷贝到/etc目录下即可
参考链接参考链接: 配置达梦dblink到sqlserver2012出现连接异常
参考链接: DM->DM通过ODBC方式创建DBLINK,报错DBLINK连接丢失
参考链接: 【有道云笔记】达梦与sqlserver之间dblink创建
参考链接: Java ODBC连接SqlServer,FreeTDS/jtds 连接SqlServer
问题4:远程操作符执行失败,错误详情[[FreeTDS] [SQLServerInvalid cursor state]使用dblink查SqlServer远端表测试,报错:远程操作符执行失败,错误详情[[FreeTDS] [SQLServerInvalid cursor state],此类问题又分为两种情况:
情况1:应用端执行报错,数据库端执行不报错情况2:应用端和数据库端执行均报错。 情况1:应用端执行报错,数据库端执行不报错 问题分析&原因官方解释:管理工具默认只取前100行数据,如果超过100行,又未获取全部数据,再次执行报错无效的游标状态
解决方法每次获取全部数据,或者加top 取前几行等
情况2:应用端和数据库端执行均报错。 问题分析&原因 大部分报错集中出现在 情况1:应用端执行报错,数据库端执行不报错,但是也有少量dblink查询会出现情况2:应用端和数据库端执行均报错更有意思的是,在测试环境中不会出现这样的问题,而在正式环境中出现了,正式环境和测试环境数据库版本&驱动版本均一致严重怀疑是否和哪个参数有关系?比对测试环境和正式环境的dm.ini文件,还真找到一个:
通过hint提示拼接SQL:
select /*+ DBLINK_OPT_FLAG(509)*/ 字段1,字段2 from 表1 where 条件1 and 条件2;重新在应用端和数据库端执行,不会出现报错
解决方法因为此参数为动态参数,执行执行命令修改:
SP_SET_PARA_VALUE (1,'DBLINK_OPT_FLAG',509);再次使用dblink查远端表测试,无报错,问题解决
【达梦数据库】dblink连接[SqlServer/Mysql]报错处理由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【达梦数据库】dblink连接[SqlServer/Mysql]报错处理”