Serwer połączony z serwerem sql do oracle nie zwraca żadnych danych, gdy istnieją dane

Mam konfigurację serwera połączonego w SQL Server, aby trafić do bazy danych Oracle. Mam zapytanie w SQL Server, które łączy się z tabelą Oracle za pomocą notacji kropkowej. Otrzymuję błąd „Nie znaleziono danych” w Oracle. Po stronie Oracle trafiam na tabelę (nie na widok) i nie ma w niej udziału żadna procedura składowana.

Po pierwsze, gdy nie ma danych, powinienem uzyskać zero wierszy, a nie błąd.
Po drugie, w tym przypadku powinny istnieć dane.
Po trzecie, widziałem tylko błąd ORA-01403 w kodzie PL / SQL; nigdy w SQL.

To jest pełny komunikat o błędzie:
Dostawca OLE DB „OraOLEDB.Oracle” dla serwera połączonego „OM_ORACLE” zwrócił komunikat „ORA-01403: brak danych”.
Msg 7346, Level 16, State 2, Line 1 Nie można uzyskać danych z wiersza od dostawcy OLE DB „OraOLEDB.Oracle” dla serwera połączonego „OM_ORACLE”.

Oto kilka szczegółów, ale prawdopodobnie nic nie znaczy, ponieważ nie masz moich tabel i danych.
Oto pytanie dotyczące problemu:

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;




Nie mogę zrozumieć, dlaczego pojawia się błąd „Nie znaleziono danych”. Poniższe zapytanie wykorzystuje tę samą tabelę Oracle i nie zwraca żadnych danych, ale nie pojawia się błąd - po prostu nie zwracam wierszy.

select * from [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] where documentUploadID = -1



Zapytanie poniżej zwraca dane. Właśnie usunąłem jedną z tabel SQL Server z łączenia. Jednak usunięcie tabeli wsadowej nie zmienia wierszy zwracanych z pliku wsadowego (271 wierszy w obu przypadkach - wszystkie wiersze w pliku wsadowym mają wpis wsadowy). Powinien nadal łączyć te same wiersze pliku wsadowego z tymi samymi wierszami Oracle.

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



Ta kwerenda zwraca 5 wierszy. Powinien być taki sam jak 5 w stosunku do pierwotnego zapytania. (Nie mogę tego użyć, ponieważ potrzebuję danych z tabeli wsadowej i pliku wsadowego).

       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);

Czy ktoś doświadczył tego błędu?

questionAnswers(5)

yourAnswerToTheQuestion