OVH Cloud OVH Cloud

Bulk Insert , troncation et Ansi_Warnings

2 réponses
Avatar
Sebastien
Bonjour, Bonsoir

En SQL2000 SP1, lorsque je chargeais des donn=E9es avec Bulk=20
Insert et avec ANSI_WARNING =E0 OFF, m=EAme si il y avait un=20
d=E9passement de longueur sur une zone (4 caract=E8res dans un=20
varchar(3)) et sur une ligne =E7a passait.
Avec SQL2000 SP3, dans le m=EAme cas, le chargement =E9choue.

La fonction Bulk Insert aurait-elle chang=E9e entre le SP1=20
et le SP3 de SQL2000 ? Elle se moque compl=E8tement de la=20
valeur des ANSI_WARNING and co.

Une solution de contournement ? un param=E8tre cach=E9 ? A=20
part revenir avec le bon vieux bcp ?

Messages d'erreur
Msg 4863, niveau 16, etat 1, serveur xxxx, ligne x
Erreur de conversion de donn=E9es =E0 inserer en bloc=20
(troncature) pour la ligne x, colonne x(xxxx)
Msg 7399, niveau 16, etat 1, serveur xxxx, ligne x
Le fournisseur OLE DB 'STREAM' rapporte une erreur. Le=20
fournisseur n'a donn=E9 aucune information quant =E0 cette=20
erreur.
Trace de l'erreur OLE DB [OLE/DB Provider 'STREAM'=20
IRowSet::GetNextRows returned 0x80004005: Le fournisseur=20
n'a donn=E9 aucune information quant =E0 cete erreur.].

2 réponses

Avatar
Fred BROUARD
as tu pensé à donner une valeur importante au paramètre MAXERRORS de l'ordre
Bulk Insert ?

MAXERRORS [ = max_errors ]

Nombre maximal d'erreurs tolérées avant l'annulation de la copie en bloc. Les
lignes qui ne peuvent pas être importées par l'opération de copie ne sont pas
prises en compte et sont comptées comme une erreur. Si max_errors n'est pas
spécifié, la valeur par défaut est de 10.

A +

Sebastien a écrit:
Bonjour, Bonsoir

En SQL2000 SP1, lorsque je chargeais des données avec Bulk
Insert et avec ANSI_WARNING à OFF, même si il y avait un
dépassement de longueur sur une zone (4 caractères dans un
varchar(3)) et sur une ligne ça passait.
Avec SQL2000 SP3, dans le même cas, le chargement échoue.

La fonction Bulk Insert aurait-elle changée entre le SP1
et le SP3 de SQL2000 ? Elle se moque complètement de la
valeur des ANSI_WARNING and co.

Une solution de contournement ? un paramètre caché ? A
part revenir avec le bon vieux bcp ?

Messages d'erreur
Msg 4863, niveau 16, etat 1, serveur xxxx, ligne x
Erreur de conversion de données à inserer en bloc
(troncature) pour la ligne x, colonne x(xxxx)
Msg 7399, niveau 16, etat 1, serveur xxxx, ligne x
Le fournisseur OLE DB 'STREAM' rapporte une erreur. Le
fournisseur n'a donné aucune information quant à cette
erreur.
Trace de l'erreur OLE DB [OLE/DB Provider 'STREAM'
IRowSet::GetNextRows returned 0x80004005: Le fournisseur
n'a donné aucune information quant à cete erreur.].




--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Sebastien
Oui, avec MAXERRORS=0 (infini) ou 10 ou 1000, idem, même
effet.

A+
Sébastien

-----Message d'origine-----
as tu pensé à donner une valeur importante au paramètre


MAXERRORS de l'ordre
Bulk Insert ?

MAXERRORS [ = max_errors ]

Nombre maximal d'erreurs tolérées avant l'annulation de


la copie en bloc. Les
lignes qui ne peuvent pas être importées par l'opération


de copie ne sont pas
prises en compte et sont comptées comme une erreur. Si


max_errors n'est pas
spécifié, la valeur par défaut est de 10.

A +

Sebastien a écrit:
Bonjour, Bonsoir

En SQL2000 SP1, lorsque je chargeais des données avec




Bulk
Insert et avec ANSI_WARNING à OFF, même si il y avait




un
dépassement de longueur sur une zone (4 caractères




dans un
varchar(3)) et sur une ligne ça passait.
Avec SQL2000 SP3, dans le même cas, le chargement




échoue.

La fonction Bulk Insert aurait-elle changée entre le




SP1
et le SP3 de SQL2000 ? Elle se moque complètement de




la
valeur des ANSI_WARNING and co.

Une solution de contournement ? un paramètre caché ? A
part revenir avec le bon vieux bcp ?

Messages d'erreur
Msg 4863, niveau 16, etat 1, serveur xxxx, ligne x
Erreur de conversion de données à inserer en bloc
(troncature) pour la ligne x, colonne x(xxxx)
Msg 7399, niveau 16, etat 1, serveur xxxx, ligne x
Le fournisseur OLE DB 'STREAM' rapporte une erreur. Le
fournisseur n'a donné aucune information quant à cette
erreur.
Trace de l'erreur OLE DB [OLE/DB Provider 'STREAM'
IRowSet::GetNextRows returned 0x80004005: Le




fournisseur
n'a donné aucune information quant à cete erreur.].




--
Frédéric BROUARD, MVP SQL Server. Expert SQL /


spécialiste Delphi, web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

.