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

Intercepter une erreur retourné par BCP

2 réponses
Avatar
Mark
Bonjour,

Lors du BCP IN et en cas d'erreur, je n'arrive pas a intercepter l'erreur
retourné par BCP (duplicate key par exemple), @@Error retourne toujours la
valeur 0 qu'il y'a une erruer ou non !

Est ce qu'il y'a une maniere de contourner cette limitation et d'intercepter
l'erreur ?

Merci

2 réponses

Avatar
Bouarroudj Mohamed
BCP est un external outil et le comportement de SQL Server lors de l'erreur
est de terminer la connection que BCP a ouvert (BCP en tant que outil
externe ouvre une nouvelle connection), il y'a pas de lien entre les deux
connections et la variable @@ERROR est toujours a 0

Vous pouvez contourner cette limitation en dirigeant la sortie du BCP vers
une table temporaire
Voici un exemple :

create table #BcpTemp
(
BcpTempID int identity(1, 1),
BCPOut varchar(8000)
)

insert into #BcpTemp
exec master.dbo.xp_cmdshell 'bcp DBName.dbo.TableName IN ...'

if exists (select * from #BcpTemp where BCPOut like '%Error =%')
begin
-- traitement d'erreur ici
end


Bouarroudj Mohamed
http://www.sqldbtools.com/




"Mark" wrote in message
news:%
Bonjour,

Lors du BCP IN et en cas d'erreur, je n'arrive pas a intercepter l'erreur
retourné par BCP (duplicate key par exemple), @@Error retourne toujours la
valeur 0 qu'il y'a une erruer ou non !

Est ce qu'il y'a une maniere de contourner cette limitation et
d'intercepter l'erreur ?

Merci



Avatar
Med Bouchenafa
En complement, la commande BULK INSERT, presque pareil à BCP IN pourrait
peut-être solutionner ton cas

bien cordialement
Med bouchenafa
"Mark" wrote in message
news:%
Bonjour,

Lors du BCP IN et en cas d'erreur, je n'arrive pas a intercepter l'erreur
retourné par BCP (duplicate key par exemple), @@Error retourne toujours la
valeur 0 qu'il y'a une erruer ou non !

Est ce qu'il y'a une maniere de contourner cette limitation et
d'intercepter l'erreur ?

Merci