2012-05-02 62 views
5

Próbuję wykonać kwerendy przeciwko Oracle z klauzuli WHERE tym0x80040e51 Opis: "Dostawca nie może wyprowadzić informacji o parametrze i nie wywołano SetParameterInfo."

BETWEEN date AND date2 

pierwszej rundzie badania pokazują, że dostawca Oracle OLEDB nie pozwala na sparametryzowanych kwerend, a te powinny być ustawione w zmiennych. Stworzyłem 3 zmienne. 2 trzymać moje daty są wypełniane prawidłowo, a jeden trzymać zapytanie o wyrażenie kończy się:

BETWEEN to_date('" + (DT_WSTR, 30)@[User::lastRun] + "','DD/MM/YYYY HH:MI:SS AM') AND to_date('" + (DT_WSTR, 30) @[User::thisRun] + "','DD/MM/YYYY HH:MI:SS AM')" 

Kiedy klikam „Ocenić wyrażenie” w narzędziu do tworzenia wypowiedzi, ocenia poprawnie

BETWEEN to_date('1/1/1900','DD/MM/YYYY HH:MI:SS AM') AND 
to_date('1/1/2010','DD/MM/YYYY HH:MI:SS AM') 

I jestem w stanie uruchomić to przeciwko Oracle z powodzeniem za pomocą innych narzędzi.

Ale gdy próbuję uruchomić pakiet, otrzymuję:

[mySource 1 ] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E51. An OLE DB record is available. Source: "OraOLEDB" Hresult: 0x80040E51 Description: "Provider cannot derive parameter information and SetParameterInfo has not been called.".

Gdzie MySource jest OLE DB źródłowy. Ma ustawioną opcję AccessMode na "SQL Command From Variable" i SQLCommandVariable ustawioną na moją zmienną zapytania.

Próbowałem również ręczne ustawienie wszystkich wyjścia kolumn zewnętrznych i zmieniając niektóre wartości byłem wybierających w zapytaniu do Odrzućcie typ danych Oracle DATE:

to_char(PT.CREATED_DTTM,'DD/MM/YYYY HH:MI:SS AM') 

jestem jeszcze całkiem nowy SSIS, więc nie jestem nawet pewien, czy szukam w odpowiednim miejscu źródła tego błędu. Czy ktoś ma pomysły, dokąd się udać?

Zrzuty ekranu zgodnie z życzeniem. Jak widać zapytanie "z zmiennej" działa zgodnie z oczekiwaniami w trybie podglądu, ale kiedy próbuję go wykonać, pojawia się błąd.

Control Flow Data Source Debug error

+0

Tak, pierwsze 2 są wypełniane przez wykonywanie zadań SQL. Jak pokazałem, że zmienna jest poprawnie obliczana (ale z wartościami domyślnymi dwóch pierwszych zmiennych daty) "Kiedy klikam" Wyrażam wyrażenie "w konstruktorze wyrażeń, poprawnie oceniam" – slipsec

+0

Dodam zrzuty ekranu jutro, kiedy jestem z powrotem przed tego komputera. Na razie mogę powiedzieć, że podgląd pokazuje, że zapytanie wykonuje się poprawnie - problem ma coś wspólnego z dodaniem go do źródła OLEDB. – slipsec

+0

Dodano zrzuty ekranu zgodnie z życzeniem. Na razie mapuję tylko jedną kolumnę wyjściową, dopóki to nie zadziała. – slipsec

Odpowiedz

1

skończyło się na ustawienie tego w „wyrażenia” na przepływu danych, a nie na źródło OLD DB, upewniając się, że zmienna ma nadal „EvaluateAsExpression” = True.

Można również zobaczyć, że zaktualizowałem z OLE DB do korzystania z Attunity Oracle connector.

DataFlowSource

+0

Witam, jeśli ustawiasz wyrażenie dla [Źródło Oracle]. [Komenda Sql] w Przepływie danych, a następnie co ustawić w "Źródle Oracle" wewnątrz zadania Przepływ danych? Jak uzyskać kolumny wyników i wykonać transformacje? –

Powiązane problemy