在数据流中使用数据类型

在 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_NTEXTDT_TEXT

SetBoolean

DT_BOOL

SetByte

DT_UI1

SetBytes

DT_BYTES

SetDate

DT_DBDATE

SetDateTime

DT_DATEDT_DBTIMESTAMPDT_DBTIMESTAMP2DT_FILETIME

SetDateTimeOffset

DT_DBTIMESTAMPOFFSET

SetDecimal

DT_CYDT_DECIMALDT_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\110\DTS\MappingFiles 中的 XML 格式的映射文件与本主题中讨论的数据类型映射无关。 这些文件将数据类型从一个数据库版本或系统映射到另一个数据库版本或系统(例如,从 SQL Server 映射到 Oracle),并且只由 SQL Server 导入和导出向导使用。 有关这些映射文件的详细信息,请参阅SQL Server 导入和导出向导

Integration Services 与托管数据类型之间的映射

PipelineComponent.BufferTypeToDataRecordTypePipelineComponent.DataRecordTypeToBufferType 方法将 Integration Services 数据类型映射到托管数据类型。

注意事项注意

开发人员在使用 PipelineComponent 类的这些方法时应小心,并且可能需要编写更适合自己自定义组件的独特需求的数据类型映射方法代码。 现有方法不考虑数值精度或小数位数,或其他与数据类型本身紧密相关的属性。 Microsoft 在 Integration Services 的未来版本中,可能会修改或删除这些方法,或修改这些方法执行的映射。

下表列出了 BufferTypeToDataRecordTypeDataRecordTypeToBufferType 方法如何将各 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 数据类型转换为另一种数据类型,然后才能将该类型转换为托管类型。 PipelineComponent.ConvertBufferDataTypeToFitManaged 方法类将 Integration Services 数据类型映射到其他 Integration Services 数据类型,然后使用 PipelineComponent.BufferTypeToDataRecordType 方法将该数据类型映射到托管数据类型。

注意事项注意

开发人员在使用 PipelineComponent 类的这些方法时应小心,并且可能需要编写更适合自己自定义组件的独特需求的数据类型映射方法代码。 现有方法不考虑数值精度或小数位数,或其他与数据类型本身紧密相关的属性。 Microsoft 在 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

注意注意

ConvertBufferDataTypeToFitManaged 方法不返回 DT_DBTIMESTAMPOFFSET 数据类型的值,并发生 UnsupportedBufferDataTypeException。 必须将 DT_DBTIMESTAMPOFFSET 数据类型转换为可映射到托管数据类型的一种 Integration Services 日期/时间数据类型。 有关可映射到托管数据类型的 Integration Services 日期/时间数据类型的列表,请参阅前述“Integration Services 与托管数据类型之间的映射”中的表。有关转换数据类型的信息,请参阅 Integration Services 数据类型

Integration Services 图标(小) 使 Integration Services 保持最新

若要从 Microsoft 获得最新的下载内容、文章、示例和视频,以及从社区获得所选解决方案,请访问 MSDN 上的 Integration Services 页:


若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。

请参阅

参考

BufferTypeToDataRecordType

DataRecordTypeToBufferType

ConvertBufferDataTypeToFitManaged

概念

Integration Services 数据类型