2009-08-19 9 views
4

Ich verwende SQL Server Integration Services 2008, um einen bestimmten booleschen Wert in die Datenbank zu stellen, und ursprünglich verwendete ich den SSIS-Typ DT_BOOL (boolean).Der DT_BOOL-Wert von TRUE wird in einem Tinyint-Feld auf 255 abgebildet. Warum nicht 1?

In der Datenbank wird der boolesche Wert jedoch als Feld tinyint gespeichert (aus Legacy-Gründen). Ein boolean Wert von TRUE würde in der Datenbank als 255 (alle Bits auf), anstelle des traditionellen Wert von 1.

Gibt es eine Möglichkeit, einen DT_BOOL Wert von TRUE zu zwingen gespeichert werden, um 1 statt 255 zur Karte ? Oder muss ich das SQL-Feld in bit ändern oder einen numerischen SSIS-Typ wie DT_UI1 verwenden?

Antwort

3

Nun könnten Sie eine weitere Transformationsaufgabe in Ihr SSIS-Paket einfügen, um den DT_BOOL-Wert von TRUE in 1 und ein SSIS-Quivalent des SQL Server-Datentyps tinyint zu transformieren, aber dies fügt Ihrer Verarbeitung einen zusätzlichen Schritt hinzu.

Es wäre meiner Meinung nach viel besser, wenn Sie Ihren Datenbankdatentyp auf den passenderen Bitdatentyp ändern, wenn dies für Sie tatsächlich eine Option ist.

+2

Jetzt habe ich am Ende DT_I4 anstelle von DT_BOOL verwendet –

Verwandte Themen