Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DTS, pb insertion de null d'un fichier plat dans un format date SQ

4 réponses
Avatar
Anthony
J'ai développé un package dtsx permettant de mettre en place, à partir d'une
table SQL Serveur 2005, un fichier plât. La table contient un colonne de
format date avec des valeurs nulles.
La mise en place du fichier plât marche très bien.

Cependant, lors de l'opération inverse (lecture du fichier plât vers une
table identique à la source), le programme me génère une erreur pour
l'insertion des colonnes (au préalable nulle) au format date.
Comment résoudre ce conflit ?

Information : mon fichier plât dispose de l'encodage "Unicode".

Voici les erreurs généré par Microsoft Visual Studio 2005 :

[Insertion dans la table Users [359]] Error: An OLE DB error has occurred.
Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft
SQL Native Client" Hresult: 0x80004005 Description: "Invalid character
value for cast specification".

[Insertion dans la table Users [359]] Error: There was an error with input
column "DATE_MAJ" (659) on input "OLE DB Destination Input" (372). The column
status returned was: "Conversion failed because the data value overflowed the
specified type.".

[Insertion dans la table Users [359]] Error: The "input "OLE DB Destination
Input" (372)" failed because error code 0xC020907A occurred, and the error
row disposition on "input "OLE DB Destination Input" (372)" specifies failure
on error. An error occurred on the specified object of the specified
component.

[DTS.Pipeline] Error: The ProcessInput method on component "Insertion dans
la table Users" (359) failed with error code 0xC0209029. The identified
component returned an error from the ProcessInput method. The error is
specific to the component, but the error is fatal and will cause the Data
Flow task to stop running.

[DTS.Pipeline] Error: Thread "WorkThread0" has exited with error code
0xC0209029.

Cordialement,

--
Anthony
Développeur .NET

4 réponses

Avatar
Fred BROUARD
essayez de modifier le flag de session DATEFORMAT avant l'exécution de l'import.

SET DATEFORMAT YMD par exemple.

A +

Anthony a écrit:
J'ai développé un package dtsx permettant de mettre en place, à partir d'une
table SQL Serveur 2005, un fichier plât. La table contient un colonne de
format date avec des valeurs nulles.
La mise en place du fichier plât marche très bien.

Cependant, lors de l'opération inverse (lecture du fichier plât vers une
table identique à la source), le programme me génère une erreur pour
l'insertion des colonnes (au préalable nulle) au format date.
Comment résoudre ce conflit ?

Information : mon fichier plât dispose de l'encodage "Unicode".

Voici les erreurs généré par Microsoft Visual Studio 2005 :

[Insertion dans la table Users [359]] Error: An OLE DB error has occurred.
Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft
SQL Native Client" Hresult: 0x80004005 Description: "Invalid character
value for cast specification".

[Insertion dans la table Users [359]] Error: There was an error with input
column "DATE_MAJ" (659) on input "OLE DB Destination Input" (372). The column
status returned was: "Conversion failed because the data value overflowed the
specified type.".

[Insertion dans la table Users [359]] Error: The "input "OLE DB Destination
Input" (372)" failed because error code 0xC020907A occurred, and the error
row disposition on "input "OLE DB Destination Input" (372)" specifies failure
on error. An error occurred on the specified object of the specified
component.

[DTS.Pipeline] Error: The ProcessInput method on component "Insertion dans
la table Users" (359) failed with error code 0xC0209029. The identified
component returned an error from the ProcessInput method. The error is
specific to the component, but the error is fatal and will cause the Data
Flow task to stop running.

[DTS.Pipeline] Error: Thread "WorkThread0" has exited with error code
0xC0209029.

Cordialement,




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Anthony
Je n'ai pas trouvé, comme vous me l'aviez conseillé, comment changer le
DATEFORMAT. Etant sous l'interface en design, je ne savais où mettre le code
pour changer le format.

Cependant, j'ai trouvé une solution à mon problème. Voici l'explication de
cette solution :

Dans le dataFlow qui me permet de lire et d'insérer les données, j'ai donc
un Data Flow Source définit comme Flat File Source.
En allant dans le menu "Edit...", il suffit de cocher dans le menu
Connection Manager l'option "Retain null values from the source as null
values in the data flow".
Cela marche donc très bien.

Cependant, je me demande si lorsque je disposerai d'une chaîne vide
(interprétée comme vide dans un fichier plât) ne va pas me transmettre la
valeur nulle dans la table de destination (alors que la table source
disposait de la valeur vide et non pas nulle).

Je vous remercie de l'attention que vous avez porter à ma question.

Cordialement,

--
Anthony
Développeur .NET


"Fred BROUARD" a écrit :

essayez de modifier le flag de session DATEFORMAT avant l'exécution de l'import.

SET DATEFORMAT YMD par exemple.

A +

Anthony a écrit:
> J'ai développé un package dtsx permettant de mettre en place, à partir d'une
> table SQL Serveur 2005, un fichier plât. La table contient un colonne de
> format date avec des valeurs nulles.
> La mise en place du fichier plât marche très bien.
>
> Cependant, lors de l'opération inverse (lecture du fichier plât vers une
> table identique à la source), le programme me génère une erreur pour
> l'insertion des colonnes (au préalable nulle) au format date.
> Comment résoudre ce conflit ?
>
> Information : mon fichier plât dispose de l'encodage "Unicode".
>
> Voici les erreurs généré par Microsoft Visual Studio 2005 :
>
> [Insertion dans la table Users [359]] Error: An OLE DB error has occurred.
> Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft
> SQL Native Client" Hresult: 0x80004005 Description: "Invalid character
> value for cast specification".
>
> [Insertion dans la table Users [359]] Error: There was an error with input
> column "DATE_MAJ" (659) on input "OLE DB Destination Input" (372). The column
> status returned was: "Conversion failed because the data value overflowed the
> specified type.".
>
> [Insertion dans la table Users [359]] Error: The "input "OLE DB Destination
> Input" (372)" failed because error code 0xC020907A occurred, and the error
> row disposition on "input "OLE DB Destination Input" (372)" specifies failure
> on error. An error occurred on the specified object of the specified
> component.
>
> [DTS.Pipeline] Error: The ProcessInput method on component "Insertion dans
> la table Users" (359) failed with error code 0xC0209029. The identified
> component returned an error from the ProcessInput method. The error is
> specific to the component, but the error is fatal and will cause the Data
> Flow task to stop running.
>
> [DTS.Pipeline] Error: Thread "WorkThread0" has exited with error code
> 0xC0209029.
>
> Cordialement,
>

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************




Avatar
Fred BROUARD
Anthony a écrit:
Je n'ai pas trouvé, comme vous me l'aviez conseillé, comment changer le
DATEFORMAT. Etant sous l'interface en design, je ne savais où mettre le code
pour changer le format.

Cependant, j'ai trouvé une solution à mon problème. Voici l'explication de
cette solution :

Dans le dataFlow qui me permet de lire et d'insérer les données, j'ai donc
un Data Flow Source définit comme Flat File Source.
En allant dans le menu "Edit...", il suffit de cocher dans le menu
Connection Manager l'option "Retain null values from the source as null
values in the data flow".
Cela marche donc très bien.

Cependant, je me demande si lorsque je disposerai d'une chaîne vide
(interprétée comme vide dans un fichier plât) ne va pas me transmettre la
valeur nulle dans la table de destination (alors que la table source
disposait de la valeur vide et non pas nulle).



C'est tout le problme du défaut d'impédance des langages "ordinaires" vis à vis
des SGBDR et de SQL.

A +


Je vous remercie de l'attention que vous avez porter à ma question.

Cordialement,




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Med Bouchenafa
> Cependant, je me demande si lorsque je disposerai d'une chaîne vide
(interprétée comme vide dans un fichier plât) ne va pas me transmettre la
valeur nulle dans la table de destination (alors que la table source
disposait de la valeur vide et non pas nulle).



Seul un test pourra le confirmer.
La documentation de la propriété que tu cites est effectivement assez vague.
Personnellement je suis effectivement assez curieux de savoir comment cela
est interprété
Pourrais-tu faire le test et nous dire ce qu'il en est.

Merci d'avance
--
Avec mes meilleurs voeux 2006
Med Bouchenafa


"Anthony" a écrit dans le message de
news:
Je n'ai pas trouvé, comme vous me l'aviez conseillé, comment changer le
DATEFORMAT. Etant sous l'interface en design, je ne savais où mettre le
code
pour changer le format.

Cependant, j'ai trouvé une solution à mon problème. Voici l'explication de
cette solution :

Dans le dataFlow qui me permet de lire et d'insérer les données, j'ai donc
un Data Flow Source définit comme Flat File Source.
En allant dans le menu "Edit...", il suffit de cocher dans le menu
Connection Manager l'option "Retain null values from the source as null
values in the data flow".
Cela marche donc très bien.

Cependant, je me demande si lorsque je disposerai d'une chaîne vide
(interprétée comme vide dans un fichier plât) ne va pas me transmettre la
valeur nulle dans la table de destination (alors que la table source
disposait de la valeur vide et non pas nulle).

Je vous remercie de l'attention que vous avez porter à ma question.

Cordialement,

--
Anthony
Développeur .NET


"Fred BROUARD" a écrit :

essayez de modifier le flag de session DATEFORMAT avant l'exécution de
l'import.

SET DATEFORMAT YMD par exemple.

A +

Anthony a écrit:
> J'ai développé un package dtsx permettant de mettre en place, à partir
> d'une
> table SQL Serveur 2005, un fichier plât. La table contient un colonne
> de
> format date avec des valeurs nulles.
> La mise en place du fichier plât marche très bien.
>
> Cependant, lors de l'opération inverse (lecture du fichier plât vers
> une
> table identique à la source), le programme me génère une erreur pour
> l'insertion des colonnes (au préalable nulle) au format date.
> Comment résoudre ce conflit ?
>
> Information : mon fichier plât dispose de l'encodage "Unicode".
>
> Voici les erreurs généré par Microsoft Visual Studio 2005 :
>
> [Insertion dans la table Users [359]] Error: An OLE DB error has
> occurred.
> Error code: 0x80004005. An OLE DB record is available. Source:
> "Microsoft
> SQL Native Client" Hresult: 0x80004005 Description: "Invalid
> character
> value for cast specification".
>
> [Insertion dans la table Users [359]] Error: There was an error with
> input
> column "DATE_MAJ" (659) on input "OLE DB Destination Input" (372). The
> column
> status returned was: "Conversion failed because the data value
> overflowed the
> specified type.".
>
> [Insertion dans la table Users [359]] Error: The "input "OLE DB
> Destination
> Input" (372)" failed because error code 0xC020907A occurred, and the
> error
> row disposition on "input "OLE DB Destination Input" (372)" specifies
> failure
> on error. An error occurred on the specified object of the specified
> component.
>
> [DTS.Pipeline] Error: The ProcessInput method on component "Insertion
> dans
> la table Users" (359) failed with error code 0xC0209029. The identified
> component returned an error from the ProcessInput method. The error is
> specific to the component, but the error is fatal and will cause the
> Data
> Flow task to stop running.
>
> [DTS.Pipeline] Error: Thread "WorkThread0" has exited with error code
> 0xC0209029.
>
> Cordialement,
>

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************