在数据流中使用数据类型

在 Integration Services 中开发自定义数据流组件时,将数据复制到数据流缓冲区和从数据流缓冲区复制数据以及转换值的过程中,需要经常使用数据类型。本主题中的信息有助于您选择正确的 Integration Services 数据类型,以及在使用这些数据类型时选择正确的方法。

将数据插入数据流

PipelineBuffer 类提供一系列将数据复制到缓冲区列的 Set 方法,以及对应的一系列从缓冲区列检索数据的 Get 方法。下表显示了与每种 Integration Services 数据类型相对应的方法。

用于各数据类型的 Set 方法

用于各 Set 方法的数据类型

在数据流中映射数据类型

将数据从源经过转换移到目标时,数据流组件有时必须在 DataType 枚举中定义的 SQL Server Integration Services 类型和在 System 命名空间中定义的 Microsoft .NET Framework 托管数据类型之间转换数据类型。此外,组件有时必须先将一种 Integration Services 数据类型转换为另一种数据类型,然后才能将该类型转换为托管类型。

注意注意

默认情况下安装在 C:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles 中的 XML 格式的映射文件与本主题中讨论的数据类型映射无关。这些文件将数据类型从一个数据库版本或系统映射到另一个数据库版本或系统(例如,从 SQL Server 2000 映射到 SQL Server,或从 SQL Server 映射到 Oracle),并且只由 SQL Server 导入和导出向导使用。有关这些映射文件的详细信息,请参阅使用 SQL Server 导入和导出向导移动数据

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

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

注意事项注意

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

下表列出了 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 类的这些方法时应小心,并且可能需要编写更适合自己自定义组件的独特需求的数据类型映射方法代码。现有方法不考虑数值精度或小数位数,或其他与数据类型本身紧密相关的属性。在 Integration Services 的未来版本中,Microsoft 可能会修改或删除这些方法,或修改这些方法执行的映射。

下表列出了 ConvertBufferDataTypeToFitManaged 方法如何将 Integration Services 数据类型映射到其他 Integration Services 数据类型。

注意注意

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

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

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

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