|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 54 ![]() |
Bonjour,
je suis en SQLServer2005 et je gère les messages d'erreur dans une procédure stockée en TSQL comme il se doit avec le try catch et les variables ERROR_NUMBER, ERROR_SEVERITY, ERROR_STATE, ERROR_PROCEDURE, ERROR_LINE, ERROR_MESSAGE. J'obtiens par exemple : Numéro d'erreur : 7343 Sévérité : 16 Etat : 2 Numéro de ligne : 224 Message : Le fournisseur OLE DB "MSDASQL" du serveur lié "leserveurlié" n'a pas pu INSERT INTO la table "[leserveurlié]...[toto]". Si je lance la procédure stockée manuellement j'ai le même message dans l'onglet "Résultats" mais j'ai aussi dans l'onglet "Messages" une information plus poussée du type "Le fournisseur OLE DB "MSDASQL" du serveur lié "leserveurlié" a retourné le message "ERROR: duplicate key value violates unique constraint "toto_pkey"; Error while executing the query". Or je voudrais récupérer aussi ce message qui me donne la raison de l'échec de l'insertion retourné par OLE DB (duplicate key) d'où ma question comment faire ? D'avance merci pour vos réponses |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Dans le PS pas possible. Mais dans votre code le message de la PS est empilé avec les messages externes. Vous y aurez donc accès.
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 54 ![]() |
Bonsoir,
mais j'ai pas compris la réponse, pouvez-vous me donner un exemple ? dois-je utiliser des procédures imbriquées ? D'avance merci |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Cela n'est pas possible dans une Procédure Stockée (PS).
Il faut le faire dans le code de votre application, car une procédure stockée ne "voit" pas le code externe et donc pas les erreurs commises de façon externe. La seule chose que la PS peut savoir c'est si le code externe qu'elle appelle s'est bien ou mal passé. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 54 ![]() |
Merci, cela a le mérite d'être clair, mais comme le traitement est uniquement en TSQL et comme il n'y a pas d'application mais juste un envoi par la messagerie de SQLserver quand il y a une erreur (via le catch) je devrais donc m'en contenter.
Cdt |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com