我已经成功地在 SQL Server 2008 R2 和 Postgres 数据库之间创建了一个链接服务器,并且一切正常,除非我尝试运行一个返回 TEXT 列的存储过程。
被调用的存储过程(postgres 中的函数)的最上面几行是:
CREATE OR REPLACE FUNCTION get_defects()
RETURNS TABLE(defectid bigint, featurevalues text) AS ...
该函数显然在 postgres 中正确执行,但是当我尝试通过链接服务器在 SQL Server 中执行该函数时:
SELECT *
FROM OPENQUERY(POSTGRES, 'SELECT * FROM get_defects()')
我得到错误:
链接服务器“POSTGRES”的 OLE DB 提供程序“MSDASQL”返回消息“请求的转换不受支持。”。
消息 7341,级别 16,状态 2,第 1
行无法从链接服务器“POSTGRES”的 OLE DB 提供程序“MSDASQL”获取列“[MSDASQL].featurevalues”的当前行值。
问题似乎出在尝试返回 TEXT 列featurevalues时,因为以下查询按预期执行:
SELECT defectid
FROM OPENQUERY(POSTGRES, 'SELECT * FROM get_defects()')
任何帮助将不胜感激..