2016-04-12 2 views
0

Ich erstelle ein SSIS-Paket, das im Grunde eine SQL-Aufgabe haben wird, die eine Stored Procedure verwendet, die eine einzelne Zeichenfolge-Spalte zurückgibt.SSIS | Alle Abfragen und Stored Procedures Returning DBNull

Das Problem ist, dass alle Anfragen versuche ich, kehren diese Fehlermeldung:

Fehler: Der Typ des Wertes (DBNull) der Variablen zugewiesen wird „User :: varTEST“ unterscheidet sich von der aktuellen Variablentyp (Int32). Variablen können den Typ während der Ausführung nicht ändern. Variablentypen sind streng, außer für Variablen vom Typ Objekt.

Es scheint, dass meine Abfrage keine Werte zurückgibt, wenn ich tatsächlich sql Management Studio verwende, um die gespeicherte Prozedur auszuführen, gibt es Werte zurück. Ich verwende den vollständigen Ergebnissatz und als Ergebnis einen Namen, der 0 verwendet, um mit meiner Variablen zu verknüpfen. Ich habe einfache Abfragen versucht und es scheint, dass alles DBNull zurückgibt.

Ich habe auch die Verbindung getestet, und es ist erfolgreich.

Irgendwelche Ideen?

Edit: enter image description here

+0

Es tut uns leid, wenn dies in die falsche Richtung kommt, aber sind Sie auf die gleichen Daten in Ihrem SSIS-Paket wie Ihre Abfrage in SSMS hingewiesen? Möglicherweise ein Kontextproblem. –

+0

Gibt Ihre Abfrage mehr als eine Zeile zurück? –

+0

manchmal gibt es 1 Zeile zurück. Andere Male gibt es mehr als eins zurück. – Richasantos

Antwort

3

Eine Abfrage, die mehr als eine Zeile zurückgeben kann, kann nicht verwendet werden, um eine SSIS-Variable vom Typ Int32 zu bevölkern, noch von irgendeiner anderen Typ als Gegenstand.

Wenn Ihre Task "ExecuteSQL" die Option "Full Resultset" verwendet, müssen Sie das Ergebnis einer Variable vom Typ "Object" zuordnen.

+0

Danke. Wie kann ich dann jede Zeile verwenden, um eine E-Mail zu senden? – Richasantos

+1

Sie würden die Objektvariable entweder in einer foreach-Schleife oder in einer Skriptaufgabe durchlaufen. –

+0

Es hat funktioniert! Vielen Dank! – Richasantos

Verwandte Themen