Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

sql server linked server to oracle gibt keine gefundenen Daten zurück, wenn Daten vorhanden sind

Heute hatte ich das gleiche Problem mit einem inneren Join. Wie beim Erstellen einer Tabellenwertfunktion vorgeschlagen von codechurn oder mit einer temporären Tabelle vorgeschlagen von user1935511 oder die Join-Typen ändern vorgeschlagen von cymorg sind keine Optionen für mich, ich teile gerne meine Lösung.

Ich habe Beitrittshinweise verwendet um den Abfrageoptimierer in die richtige Richtung zu lenken, da das Problem anscheinend von der Nested-Loops-Join-Strategie mit der Remote-Tabelle lokal aufsteigt. Für mich HASH , MERGE und REMOTE Beitrittshinweise funktionierten.

Für Sie REMOTE wird keine Option sein, da es nur für Inner-Join-Operationen verwendet werden kann. Die Verwendung von etwas wie dem Folgenden sollte also funktionieren.

select *
from eopf.Batch b
join eopf.BatchFile bf
  on b.BatchID = bf.BatchID
left outer merge join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
  on bf.ReferenceID = du.documentUploadID;