Bonjour,
Je vous décris très rapidement mon problème :
J'ai une procédure qui crée une nouvelle table, qui le remplie avec des données et à la fin il supprime la table qui est en production et renomme la table que je viens de créé par le nom de la table de production.
Cette procédure peut être exécutée plusieurs fois (simultanément avec les mêmes paramètres). Pour chaque exécution le nom de table temporaire est unique mais pas le nom de la table de production.
Donc j'ai un conflit lors d'exécution simultané.
Malgré différents méthodes que j'utilise j'ai toujours environs 50% d'erreur.
Voici le code (j'utilise du SQL dynamique car le nom des tables ne sont pas fixe):
select @sql = ' SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
Begin transaction
If OBJECT_ID('''+@TableProd+''') is not null
begin
Update '+@TableProd+' set Col_Criteria_Sys = null where 1=2
DROP TABLE '+@TableProd +'
end
exec sp_rename N'''+@TableTemp+''', N'''+@TableProd+'''
Commit '
exec(@sql)
Voici le message d'erreur :
" Erreur : la valeur @newname 't_C177' est déjà utilisée en tant que nom object et provoquera une duplication qui n'est pas autorisée "
Merci de votre aide.
Sami.