You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2022链接MySQL时MSDASQL元数据不一致问题求助

解决SQL Server 2022链接MySQL时unsigned int列元数据不一致问题

问题背景

我们原本使用SQL Server 2012与Ubuntu上的MySQL Server 8.0.35,现已将SQL Server迁移至2022版本(Windows Server 2022),MySQL服务器保持不变。现在使用Linked Server连接MySQL时,多数查询无法正常运行,报错信息如下:

OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. the tstamp-column (compile-time ordinal 4) of object "DatabaseName"."SchemaName"."ColumnName" was reported to have a "DBTYPE" of 3 at compile time and 19 at run time.

该列数据类型为unsigned int,查阅MySQL Connector文档得知unsigned int应映射为SQL_INTEGER,但当前映射出现偏差。已尝试过MySQL Connector ODBC 8.0.25(与原SQL Server 2012使用版本一致)、8.0.32及8.2.0版本。已知OPENQUERY可部分解决问题,但现有大量复杂语句无法全部适配,需其他解决方案。

解决方案

调整ODBC数据源的类型映射配置

  • 打开对应位数的ODBC数据源管理器(SQL Server 2022为64位),找到连接MySQL的数据源,进入配置界面。
  • 进入「详细配置」的「Advanced」标签页,添加或修改以下键值对:
    • OPT_INSENSITIVE_CHAR=1:统一字符类型处理逻辑
    • USE_MYSQL_TYPE=1:强制使用MySQL原生类型映射规则,避免ODBC自动转换偏差
    • UNSIGNED=1:显式指定unsigned类型的映射规则,确保unsigned int被正确识别为SQL_INTEGER
  • 保存配置后,重新测试Linked Server查询。

修改Linked Server的属性设置

  • 在SQL Server Management Studio中找到目标Linked Server,右键选择「属性」。
  • 进入「服务器选项」页面,修改以下设置:
    • 将「Collation Compatible」设为True:让SQL Server认为Linked Server的排序规则与本地兼容,减少元数据校验冲突
    • 确保「Data Access」「RPC」「RPC Out」均设为True:保障数据访问和远程调用的正常执行
    • 将「Use Remote Collation」设为False:强制使用本地SQL Server的排序规则处理元数据
  • 应用设置后,执行sp_refreshlinkedserver 'LinkedServerName'刷新Linked Server配置。

自定义类型映射(注册表修改)

  • 打开注册表编辑器,定位到MySQL ODBC驱动的注册表路径(64位驱动通常在HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MySQL ODBC 8.0 Unicode Driver)。
  • 添加字符串值TypeCompatibility,设置值为8.0:强制驱动使用与SQL Server更兼容的类型映射逻辑,优先将unsigned int映射为SQL_INTEGER。
  • 修改后重启SQL Server服务,确保配置生效。

临时应急方案(针对特定列)

若全局配置无法立即生效,可对报错列进行显式类型转换,在查询中使用CAST或CONVERT适配SQL Server类型:

SELECT CAST(RemoteTable.tstamp AS INT) AS tstamp
FROM LinkedServerName.DatabaseName.SchemaName.RemoteTable

该方式无需修改全局配置,可快速解决单个查询的问题,适合逐步过渡。

内容的提问来源于stack exchange,提问作者halliballi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:28:19