次の方法で共有


データ フロー内のデータ型の処理

適用対象:SQL Server Azure Data Factory の SSIS Integration Runtime

Integration Services のカスタム データ フロー コンポーネント開発には、データ フロー バッファーにデータをコピーしたり、データ フロー バッファーからデータを取得したり、値を変換したりするなど、常にデータ型の処理が伴います。 このトピックでは、Integration Services のデータ型の正しい選択と、それを扱うための適切なメソッドの使用について説明します。

データ フローへのデータの挿入

PipelineBuffer クラスには、データをバッファー列にコピーするための一連の Set メソッドと、これらに対応して、データをバッファー列から取得するための一連の Get メソッドが用意されています。 次の表は、Integration Services の各データ型と使用できるメソッドの対応関係を示しています。

データ型に対して使用する Set メソッド

次の表は、データ型と Set メソッドおよび Get メソッドの対応関係を一覧にしたものです。

データ型 Set メソッド Get メソッド
DT_BOOL SetBoolean GetBoolean
DT_BYTES SetBytes GetBytes
DT_CY SetDecimal GetDecimal
DT_DATE SetDateTime GetDateTime
DT_DBDATE SetDate GetDate
DT_DBTIME SetTime GetTime
DT_DBTIME2 SetTime GetTime
DT_DBTIMESTAMP SetDateTime GetDateTime
DT_DBTIMESTAMP2 SetDateTime GetDateTime
DT_DBTIMESTAMPOFFSET SetDateTimeOffset GetDateTimeOffset
DT_DECIMAL SetDecimal GetDecimal
DT_FILETIME SetDateTime GetDateTime
DT_GUID SetGuid GetGuid
DT_I1 SetSByte GetSByte
DT_I2 SetInt16 GetInt16
DT_I4 SetInt32 GetInt32
DT_I8 SetInt64 GetInt64
DT_IMAGE AddBlobData または AddBlobData GetBlobData
DT_NTEXT AddBlobData または AddBlobData GetBlobData
DT_NULL SetNull このデータ型に適用できる Get メソッドはありません。
DT_NUMERIC SetDecimal GetDecimal
DT_R4 SetSingle GetSingle
DT_R8 SetDouble GetDouble
DT_STR SetString GetString
DT_TEXT AddBlobData または AddBlobData GetBlobData
DT_UI1 SetByte GetByte
DT_UI2 SetUInt16 GetUInt16
DT_UI4 SetUInt32 GetUInt32
DT_UI8 SetUInt64 GetUInt64
DT_WSTR SetString GetString

Set メソッドで使用するデータ型

Set メソッド データ型
AddBlobData または AddBlobData DT_IMAGEDT_NTEXT、または DT_TEXT
SetBoolean DT_BOOL
SetByte DT_UI1
SetBytes DT_BYTES
SetDate DT_DBDATE
SetDateTime DT_DATEDT_DBTIMESTAMPDT_DBTIMESTAMP2、または DT_FILETIME
SetDateTimeOffset DT_DBTIMESTAMPOFFSET
SetDecimal DT_CYDT_DECIMAL、または DT_NUMERIC
SetDouble DT_R8
SetGuid DT_GUID
SetInt16 DT_I2
SetInt32 DT_I4
SetInt64 DT_I8
SetNull DT_NULL
SetSByte DT_I1
SetSingle DT_R4
SetString DT_STR または DT_WSTR
SetTime DT_DBTIME または DT_DBTIME2
SetUInt16 DT_UI2
SetUInt32 DT_UI4
SetUInt64 DT_UI8

データ フローでのデータ型のマッピング

変換によってデータを変換元から変換先に移動する間に、DataType 列挙型で定義された SQL Server Integration Services の型と、System 名前空間で定義された Microsoft .NET Framework のマネージド データ型との間で、データ フロー コンポーネントによるデータ型の変換が必要になる場合があります。 また、Integration Services のデータ型をマネージド型に変換する前に、別の型への変換が必要になる場合もあります。

注意

既定で C:\Program Files\Microsoft SQL Server\130\DTS\MappingFiles にインストールされる XML 形式のマッピング ファイルは、このトピックで説明するデータ型のマッピングには関連しません。 これらのファイルは、データ型をあるデータベース バージョンまたはシステムから別のデータベース バージョンまたはシステムにマップする (たとえば、SQL Server から Oracle へ) ものであり、SQL Server のインポートおよびエクスポート ウィザードでのみ使用されます。 これらのマッピング ファイルの詳細については、「SQL Server インポートおよびエクスポート ウィザード」を参照してください。

Integration Services とマネージド データ型とのマッピング

BufferTypeToDataRecordType および DataRecordTypeToBufferType メソッドは、Integration Services のデータ型をマネージド データ型にマップします。

注意事項

開発者が PipelineComponent クラスのこれらのメソッドを使用する際には注意が必要です。また、カスタム コンポーネントの固有の要件により適した独自のデータ型マッピング メソッドのコーディングが必要になる場合もあります。 既存のメソッドでは、数値有効桁数や小数点以下桁数が考慮されていません。また、他のプロパティは、データ型そのものに密接に関連します。 Integration Services の将来のバージョンでは、これらのメソッドが変更または削除されたり、メソッドが実行するマッピングが変更される可能性があります。

次の表に、BufferTypeToDataRecordType および DataRecordTypeToBufferType メソッドで、Integration Services のさまざまなデータ型がどのようにマネージド データ型にマップされるかを示します。

Integration Services データ型 マップ先のマネージド データ型
DT_WSTR System.String
DT_BYTES System.Byte の配列
DT_DBTIMESTAMP System.DateTime
DT_DBTIMESTAMP2 System.DateTime
DT_DBTIMESTAMPOFFSET System.DateTimeOffset
DT_DBDATE System.DateTime
DT_DBTIME System.TimeSpan
DT_DBTIME2 System.TimeSpan
DT_DATE System.DateTime
DT_FILETIME System.DateTime
DT_NUMERIC System.Decimal
DT_GUID System.Guid
DT_I1 System.SByte
DT_I2 System.Int16
DT_I4 System.Int32
DT_I8 System.Int64
DT_BOOL System.Boolean
DT_R4 System.Single
DT_R8 System.Double
DT_UI1 System.Byte
DT_UI2 System.UInt16
DT_UI4 System.UInt32
DT_UI8 System.UInt64

Integration Services データ型から適合マネージド データ型へのマッピング

Integration Services のデータ型をマネージド型に変換する前に、データ フロー コンポーネントによる別の型への変換が必要になる場合もあります。 ConvertBufferDataTypeToFitManaged メソッド クラスは、Integration Services のデータ型を Integration Services の他のデータ型にマップし、マップ後のデータ型は BufferTypeToDataRecordType メソッドを使ってマネージド データ型にマップできます。

注意事項

開発者が PipelineComponent クラスのこれらのメソッドを使用する際には注意が必要です。また、カスタム コンポーネントの固有の要件により適した独自のデータ型マッピング メソッドのコーディングが必要になる場合もあります。 既存のメソッドでは、数値有効桁数や小数点以下桁数が考慮されていません。また、他のプロパティは、データ型そのものに密接に関連します。 Integration Services の将来のバージョンでは、これらのメソッドが変更または削除されたり、メソッドが実行するマッピングが変更される可能性があります。

次の表では、ConvertBufferDataTypeToFitManaged メソッドによって、Integration Services のデータ型が、Integration Services の他のデータ型にどのようにマップされるかを示します。

元の Integration Services データ型 マップ先の Integration Services データ型
DT_DECIMAL DT_NUMERIC
DT_CY DT_NUMERIC
DT_DATE DT_DBTIMESTAMP
DT_DBDATE DT_DBTIMESTAMP
DT_FILETIME DT_DBTIMESTAMP
DT_DBTIMESTAMP2 DT_DBTIMESTAMP
DT_DBTIME DT_DBTIME2
DT_BOOL DT_I4
DT_TEXT DT_WSTR
DT_NTEXT DT_WSTR
DT_STR DT_WSTR
DT_IMAGE DT_BYTES

Note

ConvertBufferDataTypeToFitManaged メソッドでは、DT_DBTIMESTAMPOFFSET データ型の値が返されず、UnsupportedBufferDataTypeException が発生します。 DT_DBTIMESTAMPOFFSET データ型は、マネージド データ型にマップできる、Integration Services のいずれかの日付/時刻データ型に変換する必要があります。 マネージド データ型にマップできる Integration Services の日付/時刻データ型の一覧については、前のセクション「Integration Services とマネージド データ型とのマッピング」の表を参照してください。データ型の変換については、「Integration Services のデータ型」を参照してください。

参照

BufferTypeToDataRecordType
DataRecordTypeToBufferType
ConvertBufferDataTypeToFitManaged
Integration Services のデータ型