2012-07-31 13 views
19

Sono relativamente nuovo a SSIS. Sto cercando di estrarre informazioni da un database Oracle utilizzando Microsoft OLE DB per Oracle e sto usando questa query:SSIS - il valore non può essere convertito a causa di una potenziale perdita di dati

SELECT ID FROM Test 

ricevo un messaggio di errore che dice: the value cannot be converted because of a potential loss of data. Se cambio la query al seguente allora funziona:

SELECT '1' FROM Test 

Penso che sta venendo a mancare perché l'ID non è un intero. Tuttavia, il gestore di connessione file flat mostra che OutputColumnWidth è 50. Che cosa sto facendo male?

Aggiornamento 16:30 GMT
Ho guardato in questo un po 'di più e che sembra essere le colonne che hanno un istogramma di 'frequenza' o 'none' che stanno causando i problemi. Quelli con un istogramma di 'Altezza bilanciata' sembrano essere OK.

+0

Qual è il tipo di dati di 'ID' nella tabella' Test'? – billinkc

+0

@ billinkc, sembra essere: String [DT_STR] – w0051977

+0

@billinkc, Ho modificato la domanda. Per favore guarda. – w0051977

risposta

31

Questa è una cosa comune. L'impostazione predefinita in molti casi per le importazioni in ssis da un altro tipo di sistema in cui non è possibile determinare i metadati per le colonne è di default su str (50). Dato che stai provando a inserirlo in una colonna di un personaggio, si presume che potresti perdere i dati. Basta andare nella componente di origine facendo clic destro e scegliendo "Mostra Editor avanzato ..."

quindi passare alla ultima scheda (Input e Output Properties)

Fare clic sul + accanto a OLE DB Output Source

Fare clic sul + accanto a colonne di output

Evidenziare la colonna ID

Scorrere alla lunghezza dei dati Tipo di proprietà sulla destra della finestra di dialogo e modificarlo da 50 a 1.

012.
+1

Grazie per questo +1. La soluzione era fare il contrario di quello che hai detto, cioè cambiare da 1 a 50 (mi hai indicato nella giusta direzione). Immagino che tu abbia detto il cambiamento 50 a 1 perché pensavi che fosse un tipo intero? - In realtà era un tipo di stringa. Ho notato che alcune delle colonne di output avevano il tipo di dati errato, ad es. un intero con segno a quattro byte per una stringa. Puoi spiegare perché questo potrebbe essere successo prima di accettare la tua risposta? – w0051977

+0

Ho pensato che fosse 1 perché hai detto che funzionava per "1" Inizialmente pensavo che l'errore fosse nel tuo prossimo passaggio in cui stavi spostando i dati importati in un campo di destinazione più piccolo. La tua descrizione qui indica che i metadati sono errati sull'importazione reale. Stai utilizzando un driver per Oracle che si trova allo stesso livello del DB Oracle?Qual è lo stato del flag AlwaysUseDefaultCodePage (vedere la mia risposta qui: http://stackoverflow.com/a/8697899/236348)? –

+1

Grazie. Avevo già impostato il flag AlwaysUseDefaultCodePage come per il collegamento prima di scrivere la domanda. Cosa intendi per "metadati sbagliati" e "allo stesso livello"? – w0051977