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.
Importante: |
---|
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
Cronologia modifiche
Versione | Cronologia |
---|---|
15 settembre 2007 |
|
17 luglio 2006 |
|
5 dicembre 2005 |
|