2017-05-02 3 views
2

wenn ich versuche, über diesen Code DateTime.Now Wert DT_DBTIMESTAMP Feld passierenssis Skript konvertiert System.DateTime zu DT_DBTIMESTAMP aber nicht konvertiert zu DT_DBTIMESTAMP2

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    Output0Buffer.AddRow(); 
    Output0Buffer.Dt = DateTime.Now; 
} 

es gut funktioniert. aber wenn Output0Buffer.Dt vom Typ DT_DBTIMESTAMP2 ist, wird eine Meldung: „Der Wert zu groß ist, in dem Spaltendatenbereich des Puffers zu passen“

screenshot

obwohl DT_DBTIMESTAMP2 größer als DT_DBTIMESTAMP sein sollte

ist es eine Möglichkeit, richtig um den Wert zu übergeben?

Antwort

2

Skala Parameter

in meinem Fall standardmäßig auf 0 gesetzt wird, sollte es 7 sein

enter image description here

1

nach der Suche fand ich diesen Artikel: Mapping C# DateTime to SQL Server datetime2 via SSIS, ithink das ist, was Sie suchen.

Sie können auch eine Abhilfe tun

Sie die Ausgangsspaltentyp nicht ändern, lassen Sie es DT_DBTIMESTAMP.

und außerhalb der Skriptkomponente, hinzufügen Datenkonvertierung Transformation und wandeln die Ausgabespalte zu DT_DBTIMESTAMP2

+0

Tank Sie. Ich habe die Antwort gefunden. Skalierungsparameter wird auf 0 gesetzt durch defauld in meinem Fall sollte es 7 sein – iliyesku