MSDASQL 提供程序为 cloudera Impala 抛出错误:不支持请求的转换

MSDASQL provider throws error for cloudera Impala : Requested conversion is not supported

我们正在尝试将 unicode 数据从 Cloudera Impala 拉入 SQL 服务器。我们已完成以下步骤:

  1. 我们已经安装了 Cloudera Impala ODBC 驱动程序并配置了 DSN。我们在 DSN 设置中启用了“SQL Unicode 类型”。

  1. 我们已经在 SQL 服务器中为 DSN 创建了相应的链接服务器。我们已将选项“排序规则兼容性”设置为 True。

当我们运行下面的查询时,我们得到如下错误:

SELECT *
from openquery
(LinkedServerName,'SELECT  columnName from SchemaName.ViewName where col_id = ''ABCDEFGH''')

OLE DB provider "MSDASQL" for linked server "LinkedServerName" returned message "Requested conversion is not supported.". Msg 7341, Level 16, State 2, Line 1 Cannot get the current row value of column "[MSDASQL].columnName" from OLE DB provider "MSDASQL" for linked server "LinkedServerName".

我们也试过下面的CASTING:

  1. 使用 CAST 转换为 VARCHAR(50)
SELECT CAST(columnName AS VARCHAR(50))

但是,我们得到以下错误:

Msg 7355, Level 16, State 1, Line 1 The OLE DB provider "MSDASQL" for linked server "linkedServer" supplied inconsistent metadata for a column. The name was changed at execution time.

注: 当我们在 DSN 设置中禁用“启用 SQL unicode 数据类型”时,我们能够毫无问题地提取数据。但是,unicode 字符以方框形式出现。

能否请您帮助我们解决问题。

我们能够通过针对 cloudera Impala ODBC 64 位驱动程序和链接服务器的以下设置来解决 unicode 问题。

  1. Cloudera 的 DSN 中的 64 位 ODBC 驱动程序设置 Impala

  1. SQL服务器中的链接服务器设置