In SQL Server (presumably Oracle too) DECIMAL has a Precision and Scale, these will need to be made the same (or more generous) than the Source Oracle column
Default Precision is 18, maximum is 38
Default Scale is 0 (maximum is up to value of Precision)
I'm trying to import an Oracle table on sqlserver (real database at my client)
On oracle, I have a field of type Numeric precision 38 scale 0 which includes a data as follows:
Col1 = 0.54879878958547123654
(20 characters after the decimal point)
I can not find the corresponding type in sql
This field blocks the import and displays the following message:
Erreur 0xc020901c: Tâche de flux de données 1: Une erreur s'est produite avec colonne de sortie « BI_DURATION_FACTOR » (302) sur sortie « Sortie de source OLE DB » (11). État de colonne retourné : « Le texte est tronqué ou un ou plusieurs caractères n'ont aucune correspondance dans la page de codes cible. ».
(Assistant Importation et Exportation SQL Server)
Erreur 0xc020902a: Tâche de flux de données 1: Échec de l'objet « colonne de sortie « BI_DURATION_FACTOR » (302) » en raison d'une troncation. En outre, la disposition de la ligne de troncation sur « colonne de sortie « BI_DURATION_FACTOR » (302) » indique une erreur au niveau de la troncation. Une erreur de troncation s'est produite sur l'objet spécifié du composant spécifié.
(Assistant Importation et Exportation SQL Server)
Erreur 0xc0047038: Tâche de flux de données 1: Code d'erreur SSIS DTS_E_PRIMEOUTPUTFAILED. La méthode PrimeOutput sur composant « Source - BILLING » (1) a retourné le code d'erreur 0xC020902A. Le composant a retourné un code d'erreur lorsque le moteur du pipeline a appelé PrimeOutput(). La signification du code d'erreur est définie par le composant. Cependant, l'erreur est irrécupérable et le pipeline ne s'exécute plus. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
(Assistant Importation et Exportation SQL Server)
I'm trying to import an Oracle table on sqlserver (real database at my client)
On oracle, I have a field of type Numeric precision 38 scale 0 which includes a data as follows:
Col1 = 0.54879878958547123654
(20 characters after the decimal point)
I can not find the corresponding type in sql
This field blocks the import and displays the following message:
Erreur 0xc020901c: Tâche de flux de données 1: Une erreur s'est produite avec colonne de sortie « BI_DURATION_FACTOR » (302) sur sortie « Sortie de source OLE DB » (11). État de colonne retourné : « Le texte est tronqué ou un ou plusieurs caractères n'ont aucune correspondance dans la page de codes cible. ».
(Assistant Importation et Exportation SQL Server)
Erreur 0xc020902a: Tâche de flux de données 1: Échec de l'objet « colonne de sortie « BI_DURATION_FACTOR » (302) » en raison d'une troncation. En outre, la disposition de la ligne de troncation sur « colonne de sortie « BI_DURATION_FACTOR » (302) » indique une erreur au niveau de la troncation. Une erreur de troncation s'est produite sur l'objet spécifié du composant spécifié.
(Assistant Importation et Exportation SQL Server)
Erreur 0xc0047038: Tâche de flux de données 1: Code d'erreur SSIS DTS_E_PRIMEOUTPUTFAILED. La méthode PrimeOutput sur composant « Source - BILLING » (1) a retourné le code d'erreur 0xC020902A. Le composant a retourné un code d'erreur lorsque le moteur du pipeline a appelé PrimeOutput(). La signification du code d'erreur est définie par le composant. Cependant, l'erreur est irrécupérable et le pipeline ne s'exécute plus. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
(Assistant Importation et Exportation SQL Server)
Maybe there is a different row with a very large number? Max value that NUMERIC(38, 20) can hold is
999,999,999,999,999,999
You will also get an error if there are too many decimal places.
Perhaps in Oracle try:
SELECT COUNT(*)
FROM YourTable
WHERE YourColumn > 999999999999999999.0
I guess you would also need to try to find a way of finding any values with more decimal places. If the MAX(YourColumn) value is a lot smaller you could change the NUMERIC(38, 20) to something with more decimal places that allows enough difference between precision and scale for your largest value