SSIS-2008-SQL Ausgabeparameter Mapping datetime2 Problem Execute
-
22-08-2019 - |
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
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.