Erreurs personnalisées

vlaad Messages postés 79 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 18 décembre 2006 - 15 déc. 2006 à 10:34
vlaad Messages postés 79 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 18 décembre 2006 - 18 déc. 2006 à 09:08
Bonjour a tous,

J'utilise SQL SERVER 2000, sous WINDOWS SERVER 2003 et je rencontre un problème intéressant:

Je souhaite afficher un message d'erreur personnalisé dans SQL SERVER 2000 lors d'une requete UPDATE sur une table.

Pour faire cela j'ai donc utilisé un TRIGGER sur la table qui ressemble à ça:
(c'est un code d'exemple, la base de données est la base "pubs")

CREATE TRIGGER NomTRIGGER
ON TITLES
FOR UPDATE
AS
RAISERROR ('MessageDErreur',16,1);

Cela marche très bien. Sous l'analyseur de requetes, j'obtiens bien un message d'erreur mais, et c'est là le problème, dans Entreprise Manager, j'obtiens une boite de dialogue comprenant mon texte, mais aussi du texte que je n'ai pas demandé (texte qui, je pense, correspond à l'intervalle de sévérité selectionné dans RAISERROR...) .

J'aurais donc voulu savoir si il était possible d'obtenir une boite de dialogue ne comprenant que mon message d'erreur.

Les programmeurs sont rois....Ceux qui ne croient pas en nous sont des fous...

2 réponses

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
16 déc. 2006 à 14:12
Bonjour,

Le message que j'obtient est le suivant :
Msg 50000, Level 16, State 1, Line 1
MessageDErreur

La première ligne apparaitra tout le temps... Au lieu de RAISERROR il faut utiliser PRINT pour faire uniquement apparaître un message.

Sinon dans Enterprise Manager je ne panse pas qu'il y ai un moyen de faire apparaître jute le message.

Cordialement,

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
vlaad Messages postés 79 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 18 décembre 2006 3
18 déc. 2006 à 09:08
Merci pour ta réponse,

Pour enlever la première ligne, " Msg 50000, Level 16, State 1, Line 1",  il suffit juste de diminuer la sévérité de l'erreur en dessous de 16.
Il ne faut pas utiliser le print car cela ne remonte pas une erreur, c'est juste un affichage...

Le truc c'est que l'erreur déclenchée par le RAISERROR va me permettre d'utiliser mes alertes pour effectuer des actions via des TRIGGER...
De plus elle remontera une erreur personnalisé dans les applications qui en dépendent.

Le truc c'est que je voulais une boite de dialogue dans Entreprise Manager, pour avertir la personne qui manipulais les données que ses manipulations pouvaient influer sur l'intégrité des données en cas d'erreur, et ensuite, annuler ses modifications, pour garder l'intégrité, car c'est essentiel pour mon application.
Je bloque juste sur la boite de dialogue donc je pense que je vais annuler la boite de dialogue dans Entreprise Manager et garder le message d'erreur dans l'analyseur de requetes via la commande PRINT ou RAISERROR.

L'utilisateur, dans l'entreprise Manager, ne saura pas que sa modification aura été annulé, c'est tout...

Les programmeurs sont rois....Ceux qui ne croient pas en nous sont des fous...
0
Rejoignez-nous