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

使用Openquery从Oracle迁移数据至SQL Server 2019行数据匹配异常求助

OpenQuery跨库同步数据时State与City对应关系错乱问题(SQL Server 2019 vs 2013)

我尝试通过OpenQuery将Oracle服务器的table1表数据导入SQL Server的table321表,结果出现State与City的对应关系完全错乱的情况。该操作在SQL Server 2013中可正常执行,但在SQL Server 2019中出现异常。

源服务器(Oracle)数据

StateCity
NYSyracuse
FloridaOrlando
TexasAustin

目标服务器(SQL Server)加载后数据

StateCity
NYAustin
FloridaSyracuse
TexasOrlando

使用的Openquery语句:

INSERT INTO table321
SELECT * FROM OPENQUERY(hjgg, ''
select *
FROM table1'')

解决办法

  • 明确指定列名,避免使用SELECT *
    SQL Server 2019对OPENQUERY的列映射逻辑可能存在调整,依赖SELECT *会受两端表列顺序、驱动返回列顺序的影响,极易导致字段错位。修改后的语句如下:
INSERT INTO table321 (State, City)
SELECT State, City FROM OPENQUERY(hjgg, ''select State, City FROM table1'')

这种写法强制指定字段映射关系,彻底避免列顺序不匹配的问题。

  • 检查链接服务器的Oracle驱动版本
    SQL Server 2019默认使用的Oracle ODBC/OLEDB驱动版本可能与2013不同,部分新版本驱动返回的列顺序会发生变化。可以尝试换回与SQL Server 2013环境一致的驱动版本,或者更新至最新稳定版驱动后测试。

  • 验证两端表的列定义一致性
    确认Oracle的table1和SQL Server的table321的列顺序、数据类型是否完全一致。若目标表列顺序与源表相反,使用SELECT *必然会导致数据错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:10:23