Trabalhando com tipos de dados no fluxo de dados

Aplica-se a:SQL Server SSIS Integration Runtime no Azure Data Factory

Ao desenvolver um componente de fluxo de dados personalizado no Integration Services, você trabalha constantemente com tipos de dados por meio da cópia de dados entre os buffers de fluxo de dados e a transformação de valores. As informações deste tópico ajudam você a escolher os tipos de dados corretos do Integration Services e a usar os métodos corretos quando estiver trabalhando com eles.

Inserindo dados no fluxo de dados

A classe PipelineBuffer fornece uma série de métodos Set para copiar dados nas colunas do buffer e uma série correspondente de métodos Get para recuperar dados das colunas do buffer. As tabelas seguintes mostram a você qual método usar com cada tipo de dados do Integration Services.

Defina os métodos a serem utilizados com os tipos de dados

A tabela seguinte lista o tipo de dados na primeira coluna e os métodos Set e Get correspondentes.

Tipo de Dados Método Set Método 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 ou AddBlobData GetBlobData
DT_NTEXT AddBlobData ou AddBlobData GetBlobData
DT_NULL SetNull Não há método Get aplicável a este tipo de dados.
DT_NUMERIC SetDecimal GetDecimal
DT_R4 SetSingle GetSingle
DT_R8 SetDouble GetDouble
DT_STR SetString GetString
DT_TEXT AddBlobData ou AddBlobData GetBlobData
DT_UI1 SetByte GetByte
DT_UI2 SetUInt16 GetUInt16
DT_UI4 SetUInt32 GetUInt32
DT_UI8 SetUInt64 GetUInt64
DT_WSTR SetString GetString

Tipos de dados para usar com os métodos Set

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

Mapeando tipos de dados no fluxo de dados

Ao mover dados de origens por meio de transformações para destinos, um componente de fluxo de dados precisa, às vezes, converter tipos de dados entre os tipos do SQL Server Integration Services definidos na enumeração DataType e os tipos de dados gerenciados do Microsoft .NET Framework definidos no namespace System. Além disso, às vezes, um componente precisa converter um tipo de dados do Integration Services em outro para que o tipo possa ser convertido em um tipo gerenciado.

Observação

Os arquivos de mapeamento no formato XML que são instalados por padrão em C:\Arquivos de Programas\Microsoft SQL Server\130\DTS\MappingFiles não são relacionados ao mapeamento de tipos de dados descrito neste tópico. Esses arquivos mapeiam tipos de dados de uma versão do banco de dados ou sistema para outro (por exemplo, do SQL Server para o Oracle) e são usados apenas pelo Assistente de Importação e Exportação do SQL Server. Para obter mais informações sobre esses arquivos de mapeamento, consulte Assistente de Importação e Exportação do SQL Server.

Mapeando entre os tipos de dados gerenciados e do Integration Services

O BufferTypeToDataRecordType e os métodos DataRecordTypeToBufferType mapeiam tipos de dados do Integration Services para tipos de dados gerenciados.

Cuidado

Os desenvolvedores devem utilizar esses métodos da classe PipelineComponent com cuidado e podem desejar codificar seus próprios métodos de mapeamento de tipo de dados que são mais adequados para as necessidades exclusivas de seus componentes personalizados. Os métodos existentes não consideram a precisão ou a escala numérica ou outras propriedades relacionadas intimamente ao próprio tipo de dados. A Microsoft pode modificar ou remover esses métodos ou modificar os mapeamentos que eles executam em uma versão futura do Integration Services.

A tabela a seguir lista como os métodos BufferTypeToDataRecordType e DataRecordTypeToBufferType mapeiam vários tipos de dados do Integration Services para tipos de dados gerenciados.

Tipo de Dados do Integration Services Mapeia para este tipo de dado gerenciado
DT_WSTR System.String
DT_BYTES Array of 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

Mapeando tipos de dados do Integration Services para se ajustarem aos tipos de dados gerenciados

Às vezes, um componente de fluxo de dados também tem que converter um tipo de dado do Integration Services em outro antes daquele tipo poder ser convertido em um tipo gerenciado. A classe de método ConvertBufferDataTypeToFitManaged mapeia os tipos de dados do Integration Services em outros tipos de dados do Integration Services que poderão, então, ser mapeados para tipos de dados gerenciados por meio do método BufferTypeToDataRecordType.

Cuidado

Os desenvolvedores devem utilizar esses métodos da classe PipelineComponent com cuidado e podem desejar codificar seus próprios métodos de mapeamento de tipo de dados que são mais adequados para as necessidades exclusivas de seus componentes personalizados. Os métodos existentes não consideram a precisão ou a escala numérica ou outras propriedades relacionadas intimamente ao próprio tipo de dados. A Microsoft pode modificar ou remover esses métodos ou modificar os mapeamentos que eles executam em uma versão futura do Integration Services.

A tabela a seguir lista como o método ConvertBufferDataTypeToFitManaged mapeia tipos de dados do Integration Services para outros tipos de dados do Integration Services.

Tipos de dados originais do Integration Services Mapeia para este tipo de dado do 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

Observação

O método ConvertBufferDataTypeToFitManaged não retorna um valor para o tipo de dado DT_DBTIMESTAMPOFFSET e ocorre uma UnsupportedBufferDataTypeException. Você deve converter o tipo de dado DT_DBTIMESTAMPOFFSET em um dos tipos de dados de data/hora do Integration Services que podem ser mapeados para um tipo de dado gerenciado. Para obter uma lista de tipos de dados de data/hora do Integration Services que podem ser mapeados para tipos de dados gerenciados, confira a tabela na seção anterior, "Mapeamento entre os tipos de dados gerenciados e do Integration Services". Para obter informações sobre como converter tipos de dados, confira Tipos de dados do Integration Services.

Consulte Também

BufferTypeToDataRecordType
DataRecordTypeToBufferType
ConvertBufferDataTypeToFitManaged
Tipos de dados do Integration Services