2013-07-22 14 views
5

Próbuję wywołać prostą procedurę przechowywaną, która zwróci listę nazw w normalnym formacie testowym, a wszystko to w jednym wierszu. Podaję dwa parametry, ale nie ważne, jak skonfigurować wywołanie, albo w edytorze źródeł OLE DB, albo w zadaniu SQL. Musi być coś, czego mi brakuje w mojej instrukcji SQL b/c, i ciągle dostaję błąd.Zapisana procedura SSIS Zadzwoń pod numer

Mój tekst polecenia SQL jest

EXEC [dbo].[spGetEmployerIdCSV] ?, ? 

Parametry olewam wymienione są dokładnie tak, jak są one zadeklarowane w procedurze przechowywanej, @IDType i @IDNumber, które są przypisane do zmiennych predefiniowanych.

Za każdym razem staram się uruchomić go z obu typów zadań, dostaję

EXEC SQL konstruktu lub oświadczenie nie jest obsługiwany.

Jaki jest najlepszy sposób uruchomienia procedury przechowywanej w SSIS?

Dziękuję.

+0

Czy zrobić mapowanie parametrów? Postępuj zgodnie z tym http://www.sqlis.com/post/The-Execute-SQL-Task.aspx – JonH

+0

której wersji SSIS? – HLGEM

+0

To jest 2012. Stwierdziłem, że problemem było importowanie varchar (Max) – Paynetech

Odpowiedz

6

Nie mogę odtworzyć Twojego problemu.

Stworzyłem przepływ kontrolny z procem już istniejącym.

control flow

Mam wykonać zadanie SQL skonfigurowany jako

exec sql task

Zakładka Parametry pokazuje

parameter mapping

Kiedy klikam run, pakiet przechodzi zielony.

Moje pierwsze założenie było takie, że zasygnalizowałeś, że korzystasz z procedury przechowywanej i błędnie dostarczyłeś część EXEC. Zrobiłem coś podobnego z SSRS, ale nawet aktualizując IsQueryStoredProcedure do True, przez Expression, nie mogłem zregenerować twojego komunikatu o błędzie.

Jeśli robisz coś innego/innego/oprócz tego, co pokazałem w zadaniu SQL wykonywania, czy mógłbyś zmienić swoje pytanie, aby opisać całą funkcjonalność, którą powinna pokazać procedura.

+0

Dziękuję billinkc. Naprawdę doceniam twoją pomoc z tym. Znalazłem problem, próbowałem początkowo zaimportować varchar (max) do mojej zmiennej, aby następnie przekazać go do sproc. Zauważyłem, że pozornie ustawienia SSIS i (max) długości NIE działają dobrze w ogóle. Powodowało to, że cały import danych zakończył się niepowodzeniem, a zatem nie dopuścił do przepłynięcia pozostałych danych. Kiedy już ustawię długość, działa dobrze, korzystając z pomocy zapytań przechowywanych w bazie danych. Jeszcze raz dziękuję! – Paynetech

+0

Tak, spowoduje to problemy, ponieważ SSIS ma własne typy danych. Prawdopodobnie użyty DT_STR, który jest zakończonym znakiem NUL ciągiem znaków ANSI/MBCS o maksymalnej długości 8000 znaków. (Jeśli wartość kolumny zawiera dodatkowe null terminatory, ciąg znaków zostanie obcięty w momencie wystąpienia pierwszej wartości pustej). SQL Server varchar (max) przechowuje maksymalnie 2 147 483 647 (2 GB) - całkiem sporo więcej! – Thronk

2

Czy określono parametry wyjściowe? Dla 2 wejścia/1 wyjście kodu SQL będzie wyglądać następująco:

EXEC [dbo].[spGetEmployerIdCSV] ?, ?, ? OUTPUT 

ResultSet musi być ustawiony na równych!

+1

To też nie działa. Czy Twój przykład odpowiedzi można wykorzystać w ramach zadania Execute SQL lub z poziomu Task Flow/edytora źródeł OLE DB? Jeśli skonfiguruję to w edytorze źródeł, po prostu odmawia przyjęcia kolejnych parametrów. Jeśli z poziomu zadania SQL stwierdza: "Konstrukcja lub instrukcja EXEC SQL nie jest obsługiwana." – Paynetech

-3

użyć tej samej komendy użyć, aby uruchomić procedurę przechowywaną w MySQL Workbench

połączenia();

użyć tego polecenia w Execute SQL Task

+0

To nie jest oznaczone jako MySQL – Hituptony

1

miałem ten sam problem.

Po uruchomieniu zadania sprawdź zakładkę "Postęp"; dzięki temu uzyskasz pełne informacje o błędzie.

W moim przypadku nie zmapowałem parametru, który utworzyłem w zadaniu SQL, do faktycznego w procedurze przechowywanej.

Kliknij dwukrotnie zadanie SQL, kliknij Odwzorowanie parametrów po lewej stronie, a następnie Utwórz parametry i odpowiadające im odwzorowania. Oto zrzut ekranu (w wersji 2012):

enter image description here

Powiązane problemy