Работа с типами данных в потоке данных

Применимо к: SQL Server Integration Runtime служб SSIS в Фабрика данных Azure

При разработке пользовательского компонента потока данных в службах 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_IMAGE, DT_NTEXTили DT_TEXT
SetBoolean DT_BOOL
SetByte DT_UI1
SetBytes DT_BYTES
SetDate DT_DBDATE
SetDateTime DT_DATE, DT_DBTIMESTAMP, DT_DBTIMESTAMP2 или DT_FILETIME
SetDateTimeOffset DT_DBTIMESTAMPOFFSET
SetDecimal DT_CY, DT_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

Сопоставление типов данных в потоке данных

При перемещении данных из источников в место назначения путем их преобразования компонент потока данных иногда должен преобразовывать типы данных в типы данных служб Integration Services SQL Server, определенные в перечислении DataType, и в типы управляемых данных Microsoft .NET Framework, определенные в пространстве имен System. Кроме того, компонент иногда должен преобразовывать один тип данных служб Integration Services в другой перед преобразованием в тип управляемых данных.

Примечание

Файлы сопоставления в XML-формате, установленные по умолчанию в папку C:\Program Files\Microsoft SQL Server\130\DTS\MappingFiles, не связаны с сопоставлением типов данных в этом разделе. Эти файлы сопоставляют типы данных одной версии базы данных или системы с другой (например, типы данных SQL Server и Oracle), и используются только мастером импорта и экспорта SQL Server. Дополнительные сведения об этих файлах сопоставления см. в разделе Мастер импорта и экспорта SQL Server.

Сопоставление типов данных служб Integration Services и управляемых типов данных

Методы BufferTypeToDataRecordType и DataRecordTypeToBufferType сопоставляют типы данных служб Integration Services с типами управляемых данных.

Внимание!

Разработчикам следует соблюдать осторожность при использовании методов класса PipelineComponent: может оказаться более удобным написать собственные методы сопоставления типов данных, более подходящие для специальных задач разрабатываемых ими компонентов. В существующих методах не учитывается числовая точность и масштаб, а также другие свойства, тесно связанные с типом данных. В следующей версии служб Integration Services корпорация Microsoft может изменить или удалить эти методы, или изменить эти процедуры сопоставления.

В следующей таблице представлены сопоставления различных типов данных служб Integration Services с типами управляемых данных с помощью методов BufferTypeToDataRecordType и DataRecordTypeToBufferType.

Тип данных служб 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 корпорация Microsoft может изменить или удалить эти методы, или изменить эти процедуры сопоставления.

В следующей таблице объясняется использование метода 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.

См. также

BufferTypeToDataRecordType
DataRecordTypeToBufferType
ConvertBufferDataTypeToFitManaged
Типы данных служб Integration Services