データ フロー内のデータ型の処理
適用対象: SQL Server Azure Data Factory の SSIS 統合ランタイム
Integration Services のカスタム データ フロー コンポーネント開発には、データ フロー バッファーにデータをコピーしたり、データ フロー バッファーからデータを取得したり、値を変換したりするなど、常にデータ型の処理が伴います。 このトピックでは、Integration Services のデータ型の正しい選択と、それを扱うための適切なメソッドの使用について説明します。
データ フローへのデータの挿入
PipelineBuffer クラスには、データをバッファー列にコピーするための一連の Set メソッドと、これらに対応して、データをバッファー列から取得するための一連の Get メソッドが用意されています。 次の表は、Integration Services の各データ型と使用できるメソッドの対応関係を示しています。
データ型に対して使用する Set メソッド
次の表は、データ型と Set メソッドおよび Get メソッドの対応関係を一覧にしたものです。
Set メソッドで使用するデータ型
データ フローでのデータ型のマッピング
変換によってデータを変換元から変換先に移動する間に、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 のデータ型