无法从链接服务器“LinkedServerName”的 OLE DB 提供程序“ProviderName”获取行数据

Ash*_*yed 1 oracle oledb linked-server

当我尝试执行涉及 Oracle 链接服务器的查询时,我遇到了这个问题。找到下面的查询,

SELECT DISTINCT Convert(nvarchar(100),A.ZIP_CD)
               ,Convert(nvarchar(100),A.CITY)
               ,Convert(nvarchar(100),A.ST_CD)
               ,Convert(nvarchar(100),E.PCT)
               ,Convert(nvarchar(100),B.DEFAULT_DEL_CHG)
               ,Convert(nvarchar(100),E.DEL_TAX)

FROM [LIVE]..[CUSTOM].MASTER_ZIP A,
     [LIVE]..[MISC].ZONE B,
     [LIVE]..[MISC].ZIP2ZONE C,
     [LIVE]..[MISC].ZIP2TAX D,
     [LIVE]..[SALES].TAT E
WHERE A.ZIP_CD = C.ZIP_CD
AND ISNULL(B.DEFAULT_DEL_CHG,0) <> 0
AND A.USPS_PRIM = 'P'
AND C.ZONE_CD = B.ZONE_CD
AND A.ZIP_CD = D.ZIP_CD
--AND decode(D.TAX_CD,'999','99',d.tax_cd) = E.TAT_CD
AND (Case When D.TAX_CD = '999' Then '99' Else D.TAX_CD End) = E.TAT_CD
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误,

无法从链接服务器“LIVE”的 OLE DB 提供程序“OraOLEDB.Oracle”获取行数据。

我在一个论坛上发现,由于 Oracle 在 sql server 中转换数字时出现问题,请尝试转换为 nvarchar,但我仍然遇到相同的错误。

关于如何解决这个问题有什么想法吗?谢谢。

Pet*_*ter 5

到目前为止我发现,有一些事情可能会触发此错误。

  • 返回了 100 多个结果。有些人在添加“前 100 个”作为最大结果大小时可以让查询正常工作。
  • 有些人声称您应该使用 openquery() 和表(包括服务器)的完全限定路径来对链接数据库执行查询。
  • 其他人说这是传递的日期格式不兼容。

找出哪一个,我还没有找到解决方案,但也许这三个之一会帮助你。