Trabajar con tipos de datos del flujo de datos

Se aplica a:SQL Server SSIS Integration Runtime en Azure Data Factory

Al desarrollar un componente de flujo de datos personalizado en Integration Services, trabaja constantemente con tipos de datos, copiando datos en y fuera de búferes de flujo de datos y transformando valores. La información de este tema le ayuda a elegir los tipos de datos de Integration Services correctos y a utilizar los métodos correctos al trabajar con ellos.

Insertar datos en el flujo de datos

La clase PipelineBuffer proporciona una serie de métodos Set para copiar los datos en las columnas de búfer y una serie correspondiente de métodos Get para recuperar los datos de las columnas de búfer. En las tablas siguientes se muestra qué método usar con cada tipo de datos de Integration Services.

Establecer los métodos que se van a usar con los tipos de datos

En la tabla siguiente se enumeran los tipos de datos en la primera columna y, a continuación, se enumeran los métodos Set y Get correspondientes.

Tipo de datos Método Set Get (Método)
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 o AddBlobData GetBlobData
DT_NTEXT AddBlobData o AddBlobData GetBlobData
DT_NULL SetNull No hay ningún método Get aplicable a este tipo de datos.
DT_NUMERIC SetDecimal GetDecimal
DT_R4 SetSingle GetSingle
DT_R8 SetDouble GetDouble
DT_STR SetString GetString
DT_TEXT AddBlobData o AddBlobData GetBlobData
DT_UI1 SetByte GetByte
DT_UI2 SetUInt16 GetUInt16
DT_UI4 SetUInt32 GetUInt32
DT_UI8 SetUInt64 GetUInt64
DT_WSTR SetString GetString

Tipos de datos que se van a usar con los métodos Set

Método Set Tipo de datos
AddBlobData o AddBlobData DT_IMAGE, DT_NTEXTo DT_TEXT
SetBoolean DT_BOOL
SetByte DT_UI1
SetBytes DT_BYTES
SetDate DT_DBDATE
SetDateTime DT_DATE, DT_DBTIMESTAMP, DT_DBTIMESTAMP2 o DT_FILETIME
SetDateTimeOffset DT_DBTIMESTAMPOFFSET
SetDecimal DT_CY, DT_DECIMALo 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 o DT_WSTR
SetTime DT_DBTIME o DT_DBTIME2
SetUInt16 DT_UI2
SetUInt32 DT_UI4
SetUInt64 DT_UI8

Asignar los tipos de datos en el flujo de datos

Al mover datos desde los orígenes a través de transformaciones hasta los destinos, un componente de flujo de datos debe realizar a veces la conversión de tipos de datos entre los tipos de SQL Server Integration Services definidos en la enumeración DataType y los tipos de datos administrados de Microsoft .NET Framework definidos en el espacio de nombres del sistema. Además, un componente debe realizar a veces la conversión de un tipo de datos de Integration Services en otro antes de que ese tipo se pueda convertir en un tipo administrado.

Nota

Los archivos de asignación en formato XML que se instalan de forma predeterminada en C:\Archivos de programa\Microsoft SQL Server\130\DTS\MappingFiles no tienen que ver con la asignación de tipo de datos descrita en este tema. Estos archivos asignan los tipos de datos de una versión de base de datos o sistema a otra (por ejemplo, de SQL Server a Oracle) y solo los usa el Asistente para importación y exportación de SQL Server. Para obtener más información sobre estos archivos de asignación, vea Asistente para importación y exportación de SQL Server.

Realizar asignaciones entre los tipos de datos de Integration Services y los administrados

Los métodos BufferTypeToDataRecordType y DataRecordTypeToBufferType asignan los tipos de datos de Integration Services a los tipos de datos administrados.

Precaución

Los programadores deben utilizar estos métodos de la clase PipelineComponent con precaución y quizá prefieran codificar los métodos de asignación de tipo de datos propios que mejor se ajustan a las necesidades únicas de sus componentes personalizados. Los métodos existentes no consideran la precisión numérica o la escala, u otras propiedades estrechamente relacionadas con el propio tipo de datos. Microsoft puede modificar o quitar estos métodos, o modificar las asignaciones que realizan, en una versión futura de Integration Services.

En la siguiente tabla se muestra cómo los métodos BufferTypeToDataRecordType y DataRecordTypeToBufferType asignan los distintos tipos de datos de Integration Services a los tipos de datos administrados.

Tipo de datos de Integration Services Se asigna a este tipo de datos administrado
DT_WSTR System.String
DT_BYTES Matriz de 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

Asignar los tipos de datos de Integration Services para que se ajusten a los tipos de datos administrados

A veces, un componente de flujo de datos debe convertir un tipo de datos de Integration Services en otro antes de que ese tipo se pueda convertir en un tipo administrado. La clase de método ConvertBufferDataTypeToFitManaged asigna los tipos de datos de Integration Services a otros tipos de datos de Integration Services que se pueden asignar después a los tipos de datos administrados utilizando el método BufferTypeToDataRecordType.

Precaución

Los programadores deben utilizar estos métodos de la clase PipelineComponent con precaución y quizá prefieran codificar los métodos de asignación de tipo de datos propios que mejor se ajustan a las necesidades únicas de sus componentes personalizados. Los métodos existentes no consideran la precisión numérica o la escala, u otras propiedades estrechamente relacionadas con el propio tipo de datos. Microsoft puede modificar o quitar estos métodos, o modificar las asignaciones que realizan, en una versión futura de Integration Services.

En la tabla siguiente se muestra cómo el método ConvertBufferDataTypeToFitManaged asigna tipos de datos de Integration Services a otros tipos de datos de Integration Services.

Tipo de datos original de Integration Services Se asigna a este tipo de datos de 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

Nota

El método ConvertBufferDataTypeToFitManaged no devuelve un valor para el tipo de datos DT_DBTIMESTAMPOFFSET y se produce una excepción UnsupportedBufferDataTypeException. Debe convertir el tipo de datos DT_DBTIMESTAMPOFFSET en uno de los tipos de datos de fecha y hora de Integration Services que se pueden asignar a un tipo de datos administrado. Para obtener una lista de los tipos de datos de fecha y hora de Integration Services que se pueden asignar a los tipos de datos administrados, vea la tabla de la sección anterior, "Realizar asignaciones entre los tipos de datos de Integration Services y los administrados". Para obtener información acerca de cómo convertir los tipos de datos, vea Tipos de datos de Integration Services.

Consulte también

BufferTypeToDataRecordType
DataRecordTypeToBufferType
ConvertBufferDataTypeToFitManaged
Tipos de datos de Integration Services