MSSQL 链接服务器错误:链接服务器的 OLE DB 提供程序“OraOLEDB.Oracle”为列提供了不一致的元数据

Dee*_*pak 5 sql-server oracle linked-server

我试图MSSqlserver使用链接服务器将数据从 Oracle 提取到数据库。

select * from [LINK_NAME]..SCHEMA.TABLE;
Run Code Online (Sandbox Code Playgroud)

但它因以下错误而失败:

链接服务器“LINK_NAME”的 OLE DB 提供程序“OraOLEDB.Oracle”为列提供了不一致的元数据。对象 ""SCHEMA"."TABLE"" 的列 "COLUMN_NAME"(编译时序数为 6)在编译时为 100,在运行时为 200。

我还需要在运行时在 where 条件下传递参数。我发现 OPENQUERY 作为解决方案,但它在运行时不支持参数。

Dee*_*pak 3

我找到了解决方案:

由于数据库列类型不匹配而出现错误。 ORACLE使用数据类型,但在SQLSERVERNVARCHAR中则使用。VARCHAR

由于NVARCHAR 的大小是VARCHAR的两倍,这就是它显示大小不匹配错误的原因。

将数据类型更改为相同的数据类型对我有用。