Frage

Ich versuche, eine SQL-Task in SSIS 2008 ausführen zu verwenden, um einen Speichervorgang Ausgabeparameter zu einem Paket Variable abzubilden.

Das Paket Variable ist SSIS Typ Datetime und der Laden Prozedur Parameter SQL-Typ DATETIME-.

Die SQL-Anweisung ist EXEC GetCurrentDate @CurrentDate=? und im Parameter-Mapping-Bildschirm, wird der Parameter auf die Paketvariable mit Richtung Ausgang und Datentyp DBTIMESTAMP angegeben abgebildet.

Wenn ich laufe das Paket ich die folgende Fehlermeldung erhalten:

  

[Ausführen von SQL-Task] Fehler: Ausführen   die Abfrage „EXEC GetCurrentDate   @ Current =? "Failed mit der   folgende Fehler: „Der Typ des   Wert wird der Variablen zugewiesen   „User :: Current“ unterscheidet sich von der   Stromvariablentyp. Variablen können   nicht Typen während der Ausführung ändern.   Variablentypen sind streng, mit Ausnahme   Variablen vom Typ Object. ". Möglich   Fehlerursache: Probleme mit der   Abfrage „ResultSet“ Eigenschaft nicht festgelegt   richtig, Parameter nicht gesetzt   richtig, oder die Verbindung nicht   etabliert richtig.

Wenn ich eine Spur auf der Abfrage ist Lauf betreibe ich die Art sehen wird als datetime2 angenommen:

declare @p3 datetime2(7)
set @p3=NULL
exec sp_executesql N'EXEC GetCurrentDate @CurrentDate=@P1 ',N'@P1 datetime2(7) OUTPUT',@p3 output
select @p3

Weiß jemand, warum es die Art ist, unter der Annahme, datetime2?

Danke

War es hilfreich?

Lösung

Können Sie die Antwort auf einem Micorsoft Connect Fehlerbericht:

  

Wir schließen diesen Fall als dieses Verhalten erwartet wird, und ist ein Ergebnis der neuen SQL-Datetime-Typen ändern. Sie verwenden einen nativen oledb Verbindungs-Manager für SQL-Aufgabe, in den Prozess der COM-Interop verwenden wir VARIANT den Wert und die einzige Möglichkeit, zu halten, um Datenverlust zu verhindern, wird der Wert als BSTR Variante zu speichern. Wenn Sie User :: dateParam zu String Typ verändern wird es funktionieren, oder Sie können wechseln Managed Connection Manager verwenden, um das COM-Interop zu umgehen.

http://connect.microsoft.com/SQLServer/feedback /ViewFeedback.aspx?FeedbackID=307835

Andere Tipps

Versuchen Sie, den inout / Ausgabeparameter als DATE statt DBTIMESTAMP in der SSIS Aufgabe angeben.

Das funktioniert sicher in SSIS 2005 Pakete die ich gearbeitet habe.

Es lohnt sich auch einen Blick auf Link , die diese sowie ein paar andere Probleme mit SSIS und Daten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top