Tipos de datos de Integration Services

Actualizado: 15 de septiembre de 2007

Cuando los datos entran en un flujo de datos en un paquete, el origen que extrae los datos convierte los datos en un tipo de datos de Integration Services. A los datos numéricos se les asigna un tipo de dato numérico, a los datos de cadena se les asigna un tipo de datos de caracteres y se asignan fechas a un tipo de datos de fecha. A otros datos, tales como GUID y bloques de objetos binarios grandes (BLOB), también se les asignan los tipos de datos de Integration Services correspondientes. Si los datos son de un tipo que no se puede convertir en un tipo de datos de Integration Services se produce un error.

Algunos componentes del flujo de datos convierten tipos de datos entre los tipos de datos de Integration Services y los tipos de datos administrados de Microsoft .NET Framework. Para obtener más información sobre las asignaciones entre los tipos de datos de Integration Services y los tipos de datos administrados, vea Mapping Data Types in the Data Flow.

La siguiente tabla enumera los tipos de datos de Integration Services.

Tipo de datos Descripción

DT_BOOL

Un valor booleano.

DT_BYTES

Un valor de datos binarios. La longitud es variable y la longitud máxima es de 8000 bytes.

DT_CY

Un valor de moneda. Este tipo de datos es un entero con signo de ocho bytes con una escala de 4 y una precisión máxima de 19.

DT_DATE

Una estructura de fecha compuesta por año, mes, día y hora.

El tipo de datos DT_DATE se implementa utilizando un número de punto flotante de 8 bytes. Los días se representan mediante incrementos de números enteros, comenzando por el 30 de diciembre de 1899 y la medianoche como hora cero. Los valores de hora se expresan como el valor absoluto de la parte fraccionaria del número. Sin embargo, un valor de punto flotante no puede representar todos los valores reales; por lo tanto, existen límites en el intervalo de fechas que se puede presentar en DT_DATE.

Por otra parte, DT_DBTIMESTAMP se representa mediante una estructura que posee campos individuales para año, mes, día, horas, minutos, segundos y milisegundos. Este tipo de datos no tiene límites respecto a los intervalos de fechas que puede presentar.

DT_DBDATE

Una estructura de fecha compuesta por año, mes y día.

DT_DBTIME

Una estructura de hora compuesta por horas, minutos y segundos.

DT_DBTIMESTAMP

Una estructura de marca de tiempo compuesta por año, mes, día, horas, minutos, segundos y milisegundos.

DT_DECIMAL

Un valor numérico exacto con una precisión fija y una escala fija. Este tipo de dato es un entero sin signo de 12 bytes con un signo aparte, una escala de 0 a 28 y una precisión máxima de 29.

DT_FILETIME

Un valor de 64 bits que representa la cantidad de intervalos de 100 nanosegundos desde el 1 de enero de 1601.

DT_GUID

Identificador único global (GUID).

DT_I1

Un entero con signo de un byte.

DT_I2

Un entero con signo de dos bytes.

DT_I4

Un entero con signo de cuatro bytes.

DT_I8

Un entero con signo de ocho bytes.

DT_NUMERIC

Un valor numérico exacto con una precisión y escala fijas. Este tipo de dato es un entero sin signo de 16 bytes con un signo aparte, una escala de 0 a 38 y una precisión máxima de 38.

DT_R4

Un valor de coma flotante y precisión única.

DT_R8

Un valor de coma flotante y precisión doble.

DT_STR

Una cadena de caracteres ANSI/MBCS terminada en NULL, con una longitud máxima de 8000 caracteres. (Si un valor de columna contiene otros terminadores NULL, la cadena se truncará cuando se encuentre el primer NULL.)

DT_UI1

Un entero sin signo de un byte.

DT_UI2

Un entero sin signo de dos bytes.

DT_UI4

Un entero sin signo de cuatro bytes.

DT_UI8

Un entero sin signo de ocho bytes.

DT_WSTR

Una cadena de caracteres Unicode terminada en NULL, con una longitud máxima de 4000 caracteres. (Si un valor de columna contiene otros terminadores NULL, la cadena se truncará cuando se encuentre el primer NULL.)

DT_IMAGE

Un valor binario con un tamaño máximo de 231-1 (2.147.483.647) bytes. .

DT_NTEXT

Una cadena de caracteres Unicode con una longitud máxima de 230 - 1 (1.073.741.823) caracteres.

DT_TEXT

Una cadena de caracteres ANSI/MBCS con una longitud máxima de 231 -1 (2.147.483.647) caracteres.

Cambiar el tipo de datos de las columnas

Si los datos en una columna no requieren el ancho total asignado por el tipo de datos de origen, puede ser recomendable cambiar el tipo de datos de la columna. Si se hace que cada fila de datos sea lo más estrecha posible, esto ayuda a optimizar el rendimiento cuando se transfieren datos porque, cuanto más estrecha sea una fila, más rápido los datos se desplazarán del origen al destino.

Integration Services incluye un conjunto completo de tipos de datos numéricos, de manera que puede hacer coincidir estrechamente el tipo de datos con el tamaño de los datos. Por ejemplo, si los valores en una columna con un tipo de datos DT_UI8 siembre son enteros entre 0 y 3000, puede cambiar el tipo de datos a DT_UI2. De forma similar, si una columna con el tipo de datos DT_CY puede reunir los requisitos de datos de paquete utilizando un tipo de datos enteros, puede cambiar el tipo de datos a DT_I4.

También puede cambiar el tipo de datos en una columna con los datos de fecha/hora para extraer la parte del día o la hora de los datos. Por ejemplo, si cambia el tipo de datos de una columna de DT_DBTIMESTAMP a DT_DBTIME, solamente la parte de horas, minutos y segundos del valor estará disponible.

Puede cambiar el tipo de datos de una columna de las siguientes maneras:

  • Mediante el uso de una transformación para reemplazar los valores de columna con los resultados de una expresión, o crear una copia de una columna que tiene un tipo de datos diferente que la columna original. Para obtener más información, vea Transformación Columna derivada.
  • Mediante una transformación para convertir el tipo de datos de una columna de un tipo de datos en un tipo de datos diferente. Para obtener más información, vea Transformación Conversión de datos.

[!NOTA] Los valores booleanos son valores lógicos, no son números. Aunque los valores booleanos pueden mostrarse como números en algunos entornos, no se almacenan como números, y varios lenguajes de programación representan los valores booleanos como valores numéricos de maneras diferentes, como sucede con los métodos de .NET Framework. Por ejemplo, las funciones de conversión disponibles en Visual Basic convierten el valor True en -1; sin embargo, el método System.Convert.ToInt32 de .NET Framework convierte True en +1. Por su parte, el lenguaje de expresiones de Integration Services convierte True en -1. Para evitar errores o resultados inesperados, no debe escribirse código que se base en valores numéricos específicos para True y False. Siempre que sea posible, se debe restringir el uso de las variables booleanas a los valores lógicos para los que están diseñadas.

Asignar tipos de datos de Integration Services a tipos de datos de bases de datos

En la siguiente tabla se proporciona orientación sobre cómo asignar los tipos de datos que usan ciertas bases de datos a los tipos de datos de Integration Services. Estas asignaciones se resumen a partir de los archivos de asignación que utiliza el Asistente para importación y exportación de SQL Server cuando importa datos de los orígenes mencionados. Para obtener más información acerca de los archivos de asignación, vea Crear paquetes mediante el Asistente para importación y exportación de SQL Server.

ms141036.note(es-es,SQL.90).gifImportante:
Estas asignaciones no están diseñadas para representar equivalencias estrictas, sino sólo para ofrecer orientación. En ciertas situaciones, puede ser necesario utilizar un tipo de datos diferente del incluido en esta tabla.
Tipo de datos SQL Server (SQLOLEDB; SQLNCLI) SQL Server (SqlClient) Jet Oracle (MSDAORA) Oracle (OracleClient) DB2 (DB2OLEDB) DB2 (IBMDADB2)

DT_BOOL

bit

bit

Bit

DT_BYTES

binary, varbinary, timestamp

binary, varbinary, timestamp

BigBinary, VarBinary

RAW

RAW

DT_CY

smallmoney, money

smallmoney, money

Currency

DT_DATE

DT_DBDATE

DT_DBTIME

DT_DBTIMESTAMP

datetime, smalldatetime

datetime, smalldatetime

DateTime

TIMESTAMP, DATE, INTERVAL

TIMESTAMP, DATE, INTERVAL

TIME, TIMESTAMP, DATE

TIME, TIMESTAMP, DATE

DT_DECIMAL

DT_FILETIME

DT_GUID

uniqueidentifier

uniqueidentifier

GUID

DT_I1

DT_I2

smallint

smallint

Short

SMALLINT

SMALLINT

DT_I4

int

int

Long

INTEGER

INTEGER

DT_I8

bigint

bigint

BIGINT

BIGINT

DT_NUMERIC

decimal, numeric

decimal, numeric

Decimal

NUMBER, INT

NUMBER, INT

DECIMAL, NUMERIC

DECIMAL, NUMERIC

DT_R4

real

real

Single

REAL

REAL

DT_R8

float

float

Double

FLOAT, REAL

FLOAT, REAL

FLOAT, DOUBLE

FLOAT, DOUBLE

DT_STR

char, varchar

VarChar

CHAR, ROWID, VARCHAR2

CHAR, VARCHAR

CHAR, VARCHAR

DT_UI1

tinyint

tinyint

Byte

DT_UI2

DT_UI4

DT_UI8

DT_WSTR

nchar, nvarchar, sql_variant, xml

char, varchar, nchar, nvarchar, sql_variant, xml

LongText

NVARCHAR2, NCHAR

CHAR, ROWID, VARCHAR2, NVARCHAR2, NCHAR

GRAPHIC, VARGRAPHIC

GRAPHIC, VARGRAPHIC

DT_IMAGE

image

image

LongBinary

LONG RAW, BLOB, LOBLOCATOR, BFILE, VARGRAPHIC, LONG VARGRAPHIC, definido por el usuario

LONG RAW, BLOB, LOBLOCATOR, BFILE, VARGRAPHIC, LONG VARGRAPHIC, definido por el usuario

CHAR () FOR BIT DATA, VARCHAR () FOR BIT DATA

CHAR () FOR BIT DATA, VARCHAR () FOR BIT DATA, BLOB

DT_NTEXT

ntext

text, ntext

NCLOB, NVARCHAR, TEXT

LONG, CLOB, NCLOB, NVARCHAR, TEXT

LONG VARCHAR, NCHAR, NVARCHAR, TEXT

LONG VARCHAR, DBCLOB, NCHAR, NVARCHAR, TEXT

DT_TEXT

text

CLOB, LONG

LONG VARCHAR FOR BIT DATA

LONG VARCHAR FOR BIT DATA, CLOB

Para obtener información acerca de la asignación de tipos de datos en el flujo de datos, vea Mapping Data Types in the Data Flow.

Vea también

Conceptos

Trabajar con datos en flujos de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

15 de septiembre de 2007

Contenido modificado:
  • Descripción actualizada del tipo de datos DT_DBTIMESTAMP.

17 de julio de 2006

Contenido modificado:
  • Se agregó una nota en la que se indican los problemas que pueden presentarse cuando se convierten tipos de datos booleanos en enteros.
  • Se agregó una nota en la que se indica que los valores de columna del tipo DT_STR o DT_WSTR que contienen otros terminadores NULL se truncan en el primer carácter NULL.

5 de diciembre de 2005

Contenido modificado:
  • Se agregó información y un vínculo al tema sobre asignación de tipos de datos de Integration Services a tipos de datos administrados.
  • Se agregó una comparación de DT_DATE y DT_DBTIMESTAMP.