Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2011, 18h28   #1
Invité régulier
 
Inscription : septembre 2006
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 54
Points : 8
Points : 8
Par défaut try catch et error_message en TSQL

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
prady92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 19h12   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
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 * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 23h59   #3
Invité régulier
 
Inscription : septembre 2006
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 54
Points : 8
Points : 8
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
prady92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 10h26   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
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 * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 11h39   #5
Invité régulier
 
Inscription : septembre 2006
Messages : 54
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 54
Points : 8
Points : 8
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
prady92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h41.


 
 
 
 
Partenaires

Hébergement Web