Condividi tramite


Tipi di dati di Integration Services

Data aggiornamento: 15 settembre 2007

Quando i dati entrano in un flusso di dati di un pacchetto, l'origine che estrae i dati li converte in un tipo di dati di Integration Services. Ai dati numerici viene assegnato un tipo di dati numeric, ai dati stringa viene assegnato un tipo di dati character e alle date viene assegnato un tipo di dati date. Agli altri dati, ad esempio GUID e BLOB (Binary Large Object), vengono assegnati i tipi dai dati di Integration Services appropriati. Se i dati sono di un tipo non convertibile in un tipo di dati di Integration Services, verrà generato un errore.

Alcuni componenti di flusso di dati convertono i tipi di dati di Integration Services in tipi di dati gestiti di Microsoft .NET Framework e viceversa. Per ulteriori informazioni sul mapping tra i tipi di dati di Integration Services e i tipi di dati gestiti, vedere Mapping Data Types in the Data Flow.

Nella tabella seguente vengono elencati i tipi di dati di Integration Services.

Tipo di dati Descrizione

DT_BOOL

Valore booleano.

DT_BYTES

Valore binario di lunghezza variabile, fino a un massimo di 8000 byte.

DT_CY

Valore di valuta. Questo tipo di dati è un valore integer di 8 byte con segno, con scala 4 e precisione massima 19.

DT_DATE

Struttura di data che include anno, mese, giorno e ora.

Il tipo di dati DT_DATE viene implementato utilizzando un numero a virgola mobile a 8 byte. I giorni vengono rappresentati tramite incrementi costituiti da numeri interi, a partire dal 30 dicembre 1899, e la mezzanotte corrisponde all'ora zero. I valori di ora sono rappresentati dal valore assoluto della parte frazionaria del numero. Poiché tuttavia i valori a virgola mobile non consentono di rappresentare tutti i numeri reali, l'intervallo di date che è possibile rappresentare utilizzando il tipo di dati DT_DATE è limitato.

Il tipo di dati DT_DBTIMESTAMP, invece, è costituito da una struttura con campi distinti per anno, mese, giorno, ore, minuti, secondi e millisecondi e può essere pertanto utilizzato per rappresentare qualsiasi data, senza limitazioni.

DT_DBDATE

Struttura di data che include anno, mese e giorno.

DT_DBTIME

Struttura di ora che include ora, minuto e secondo.

DT_DBTIMESTAMP

Struttura di timestamp che include anno, mese, giorno, ora, minuto, secondo e millisecondo.

DT_DECIMAL

Valore numerico esatto con scala e precisione fisse. Questo tipo di dati è un valore integer a 12 byte senza segno, con segno a parte, scala da 0 a 28 e precisione massima 29.

DT_FILETIME

Valore a 64 bit che rappresenta il numero di intervalli di 100 nanosecondi trascorsi dal 1 gennaio 1601.

DT_GUID

Identificatore univoco globale (GUID, Globally Unique Identifier).

DT_I1

Valore integer con segno a 1 byte.

DT_I2

Valore integer con segno a 2 byte.

DT_I4

Valore integer con segno a 4 byte.

DT_I8

Valore integer con segno a 8 byte.

DT_NUMERIC

Valore numerico esatto con scala e precisione fisse. Questo tipo di dati è un valore integer a 16 byte senza segno, con segno a parte, scala da 0 a 38 e precisione massima 38.

DT_R4

Valore a virgola mobile con precisione singola.

DT_R8

Valore a virgola mobile con precisione doppia.

DT_STR

Stringa di caratteri ANSI o MBCS con terminazione Null e lunghezza massima di 8000 caratteri. Se un valore di una colonna contiene ulteriori terminatori Null, la stringa verrà troncata in corrispondenza del primo carattere Null.

DT_UI1

Valore integer senza segno a 1 byte.

DT_UI2

Valore integer senza segno a 2 byte.

DT_UI4

Valore integer senza segno a 4 byte.

DT_UI8

Valore integer senza segno a 8 byte.

DT_WSTR

Stringa di caratteri Unicode con terminazione Null e lunghezza massima di 4000 caratteri. Se un valore di una colonna contiene ulteriori terminatori Null, la stringa verrà troncata in corrispondenza del primo carattere Null.

DT_IMAGE

Valore binario con dimensioni massime di 231-1 (2.147.483.647) byte .

DT_NTEXT

Stringa di caratteri Unicode con lunghezza massima di 230 - 1 (1.073.741.823) caratteri.

DT_TEXT

Stringa di caratteri ANSI o MBCS con lunghezza massima di 231 -1 (2.147.483.647) caratteri.

Modifica del tipo di dati delle colonne

Se i dati in una colonna non richiedono l'intera larghezza allocata dal tipo di dati di origine, sarà possibile modificare il tipo di dati della colonna. Riducendo il più possibile la larghezza delle singole righe di dati è possibile ottimizzare le prestazioni delle operazioni di trasferimento dei dati, perché minore è la larghezza della riga, più rapido sarà lo spostamento dei dati dall'origine alla destinazione.

Integration Services include un set completo di tipi di dati numeric ed è pertanto possibile scegliere quello più appropriato alle dimensioni dei dati. Se ad esempio i valori di una colonna con tipo di dati DT_UI8 sono sempre numeri interi da 0 a 3000, sarà possibile modificare il tipo di dati in DT_UI2. Analogamente, se una colonna con tipo di dati DT_CY può soddisfare i requisiti di dati del pacchetto anche utilizzando un tipo di dati integer, sarà possibile modificare il tipo di dati in DT_I4.

È inoltre possibile modificare il tipo di dati di una colonna contenente informazioni di data e ora in modo da estrarre la parte della data corrispondente al giorno o all'ora. Se ad esempio si modifica il tipo di dati di una colonna da DT_DBTIMESTAMP a DT_DBTIME, sarà disponibile solo la parte del valore relativa a ora, minuto e secondo.

Per modificare il tipo di dati di una colonna, procedere nel modo seguente:

  • Utilizzare una trasformazione per sostituire i valori della colonna con i risultati di un'espressione oppure creare una copia della colonna con tipo di dati diverso da quello della colonna originale. Per ulteriori informazioni, vedere Trasformazione Colonna derivata.
  • Utilizzare una trasformazione per eseguire il cast del tipo di dati di una colonna a un tipo di dati diverso. Per ulteriori informazioni, vedere Trasformazione Conversione dati.

[!NOTA] I valori booleani sono valori logici, non numeri. Benché possano essere visualizzati come numeri in alcuni ambienti, i valori booleani non vengono archiviati come numeri e i vari linguaggi di programmazione, così come i metodi di .NET Framework, li rappresentano come valori numerici in modi diversi. Le funzioni di conversione disponibili in Visual Basic, ad esempio, convertono True in -1, mentre il metodo System.Convert.ToInt32 di .NET Framework converte True in +1. Il linguaggio delle espressioni di Integration Services converte True in -1. Per evitare errori o risultati imprevisti, è consigliabile non scrivere codice basato su particolari valori numerici per True e False. Quando possibile, è consigliabile limitare l'utilizzo delle variabili booleane ai valori logici per i quali sono progettate.

Mapping tra i tipi di dati di Integration Services e i tipi di dati di database

Nella tabella seguente sono incluse informazioni sul mapping tra i tipi di dati utilizzati in alcuni database e i tipi di dati di Integration Services. Questi mapping sono riepilogati dai file di mapping utilizzati dall'Importazione/Esportazione guidata SQL Server per l'importazione dei dati da queste origini. Per ulteriori informazioni su questi file di mapping, vedere Creazione di pacchetti tramite Importazione/Esportazione guidata SQL Server.

ms141036.note(it-it,SQL.90).gifImportante:
Questi mapping non rappresentano una rigida corrispondenza, ma offrono solo informazioni generali. In alcuni casi potrebbe essere necessario utilizzare un tipo di dati diverso rispetto a quello indicato nella tabella.
Tipo di dati 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, definito dall'utente

LONG RAW, BLOB, LOBLOCATOR, BFILE, VARGRAPHIC, LONG VARGRAPHIC, definito dall'utente

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

Per informazioni sul mapping dei tipi di dati nel flusso di dati, vedere Mapping Data Types in the Data Flow.

Vedere anche

Concetti

Utilizzo dei dati nei flussi di dati

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

15 settembre 2007

Contenuto modificato:
  • Descrizione aggiornata del tipo di dati DT_DBTIMESTAMP.

17 luglio 2006

Contenuto modificato:
  • Esposizione dei problemi che possono verificarsi quando i tipi di dati Boolean vengono convertiti in tipi di dati integer.
  • Aggiunta dell'informazione che i valori delle colonne di tipo DT_STR o DT_WSTR che contengono ulteriori terminatori Null vengono troncati in corrispondenza del primo carattere Null.

5 dicembre 2005

Contenuto modificato:
  • Aggiunta delle informazioni e del collegamento all'argomento sul mapping tra i tipi di dati di Integration Services e i tipi di dati gestiti.
  • Aggiunta del confronto tra i tipi di dati DT_DATE e DT_DBTIMESTAMP.