Ich habe einen Verbindungsserver Setup in SQL Server, um eine Oracle-Datenbank zu treffen. Ich habe eine Abfrage in SQL Server, die in der Oracle-Tabelle mithilfe der Punktnotation verknüpft. Ich erhalte den Fehler "Keine Daten gefunden" von Oracle. Auf der Oracle-Seite treffe ich eine Tabelle (keine Ansicht) und keine gespeicherte Prozedur.SQL Server verknüpfter Server zu Oracle gibt keine Daten gefunden, wenn Daten vorhanden sind
Erstens, wenn es keine Daten gibt, sollte ich nur Null Zeilen und keinen Fehler erhalten.
Zweitens sollte es in diesem Fall tatsächlich Daten geben.
Drittens habe ich nur den ORA-01403-Fehler im PL/SQL-Code gesehen; niemals in SQL.
Dies ist die vollständige Fehlermeldung:
OLE DB-Provider "OraOLEDB.Oracle" für den Verbindungsserver "OM_ORACLE" zurückgegeben Meldung "ORA-01403: keine Daten gefunden".
Msg 7346, Ebene 16, Status 2, Zeile 1 Die Daten der Zeile können nicht vom OLE DB-Provider "OraOLEDB.Oracle" für den Verbindungsserver "OM_ORACLE" abgerufen werden.
Hier sind einige weitere Details, aber es bedeutet wahrscheinlich nichts, da Sie meine Tabellen und Daten nicht haben.
Dies ist die Abfrage mit dem Problem:
select *
from eopf.Batch b join eopf.BatchFile bf
on b.BatchID = bf.BatchID
left outer join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;
Ich kann nicht verstehen, warum ich ein „keine Daten gefunden“ Fehler. Die folgende Abfrage verwendet dieselbe Oracle-Tabelle und gibt keine Daten zurück, aber ich erhalte keinen Fehler - ich bekomme nur keine Zeilen zurück.
select * from [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] where documentUploadID = -1
Die Abfrage unter Daten zurückgibt. Ich habe gerade eine der SQL Server-Tabellen aus dem Join entfernt. Das Entfernen der Stapeltabelle ändert jedoch nicht die Zeilen, die von BatchFile zurückgegeben werden (271 Zeilen in beiden Fällen - alle Zeilen in BatchFile haben einen Stapeleintrag). Es sollte immer noch dieselben BatchFile-Zeilen denselben Oracle-Zeilen beitreten.
select *
from eopf.BatchFile bf
left outer join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;
Und diese Abfrage gibt 5 Zeilen. Es sollte die gleiche 5 von der ursprünglichen Abfrage sein. (Ich kann das nicht verwenden, da ich Daten aus der Batch- und BatchFile-Tabelle benötige).
select *
from [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
where du.documentUploadId
in
(
select bf.ReferenceID
from eopf.Batch b join eopf.BatchFile bf
on b.BatchID = bf.BatchID);
Hat jemand diesen Fehler erlebt?