There is not a ton of information to work from here, and I know very little about Oracle. If am a to make a guess there is a computed column or view on the Oracle side involved here.
Rather than using four-part notation, it may be better to use OPENQUERY:
SELECT *. FROM OPENQUERY(MyOracle, 'SELECT col1, col2, col3 FROM tbl')
The query inside OPENQUERY runs on Oracle, which means that you use Oracle syntax. This also means that you can convert troublesome data types to something that SQL Server can digest. For instance, you can convert dates to strings.
Note that the timestamp
datatypes in Oracle and SQL Server are entirely unrelated. The most closest data type to Oracle's timestamp
in SQL server is datetime2
, but vaguely recall that Oracle supports a broader range which causes problems.
Anyway, start with a straight rewrite with OPENQUERY and work from there.