Gin*_*kas 8 mysql sql-server odbc
我有一个MySQL服务器作为Microsoft SQL Server 2008中的链接服务器.对于链接,我使用MySQL ODBC Connector版本5.1.8.使用OPENQUERY(我发现执行查询的唯一方法)调用查询时,会出现问题.简单的查询,例如
SELECT * FROM OPENQUERY(MYSQL, 'SHOW TABLES')
Run Code Online (Sandbox Code Playgroud)
工作得很好.选择单个列,例如,
SELECT * FROM OPENQUERY(MYSQL, 'SELECT nr FROM letter')
Run Code Online (Sandbox Code Playgroud)
工作正常,但SELECT*语法不起作用.查询:
SELECT * FROM OPENQUERY(MYSQL, 'SELECT * FROM mytable')
Run Code Online (Sandbox Code Playgroud)
引发错误:
消息7347,级别16,状态1,行6 OLE DB提供程序'MSDASQL'用于链接服务器'MYSQL'返回的数据与列'[MSDASQL] .let_nr'的预期数据长度不匹配.(最大)预期数据长度为40,而返回的数据长度为0.
如何使SELECT*语法有效?
Tar*_*sta 13
我经历了同样的问题4天,但最后我找到了原因以及如何解决它.
如果您正在查询mySQL链接服务器并且您查询的表具有数据类型char(),则会发生此问题...这意味着固定长度NOT varchar().当您的固定长度字段的字符串短于sql server期望从odbc获得的最大长度时,会发生这种情况.
修复; 转到MySQL服务器并将数据类型更改为varchar(),保留长度,例如,char(10)将其更改为varchar(10).
这没问题.
如果修复它,请告诉我.
Tarek Basta
Gin*_*kas 10
在查询之前执行以下命令似乎有帮助:
DBCC TRACEON(8765)
错误消息消失,查询似乎工作正常.
我不确定它做了什么; 我在这里找到了它:http://bugs.mysql.com/bug.php?id = 46857
奇怪的是,SQL Server变得不稳定,停止响应查询,最后在几次查询到MySQL服务器几分钟后,在日志中崩溃与可怕的转储.我不确定这是否必须对DBCC命令做任何事情,所以我仍然对这个问题的其他可能的解决方案感兴趣.
| 归档时间: |
|
| 查看次数: |
25335 次 |
| 最近记录: |