Mam połączoną konfigurację serwera SQL Server, aby trafić bazę danych Oracle. Mam kwerendę w SQL Server, który łączy się na stole Oracle za pomocą notacji kropkowej. Otrzymuję komunikat "Brak danych znalezionych" od Oracle. Po stronie Oracle uderzam w tabelę (nie widok) i nie jest zaangażowana procedura przechowywana.Serwer połączony z serwerem sql do oracle zwraca dane, które nie zostały znalezione, gdy istnieją dane.
Po pierwsze, gdy nie ma danych, powinienem otrzymać zero wierszy, a nie błąd.
Po drugie, w tym przypadku powinny być dane.
Po trzecie, widziałem tylko błąd ORA-01403 w kodzie PL/SQL; nigdy w SQL.
Jest to pełny komunikat o błędzie:
OLE DB provider "OraOLEDB.Oracle" dla serwera połączonego "OM_ORACLE" zwrócony komunikat "ORA-01403: nie znaleziono żadnych danych".
Msg 7346, poziom 16, Stan 2, wiersz 1 Nie można uzyskać danych wiersza od dostawcy OLE DB "OraOLEDB.Oracle" dla serwera połączonego "OM_ORACLE".
Oto kilka szczegółów, ale prawdopodobnie nie ma znaczenia, ponieważ nie masz moich tabel i danych.
To zapytanie z problemem:
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 dostaję „Brak danych” błąd. Poniższe zapytanie używa tej samej tabeli Oracle i nie zwraca żadnych danych, ale nie pojawia się błąd - po prostu nie zwracam żadnych wierszy.
select * from [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] where documentUploadID = -1
Kwerenda zwraca dane poniżej. Właśnie usunąłem jeden z tabel SQL Server z join. Ale usunięcie tabeli wsadowej nie zmienia wierszy zwróconych z pliku wsadowego (271 wierszy w obu przypadkach - wszystkie wiersze w pliku wsadowym mają wpis wsadowy). Powinien nadal dołączać te same wiersze pliku wsadowego do tych samych wierszy Oracle.
select *
from eopf.BatchFile bf
left outer join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;
I ta kwerenda zwraca 5 rzędów. Powinien być taki sam 5 z 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ś napotkał ten błąd?