IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL Server 2000] Récupérer un message d'erreur


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut [SQL Server 2000] Récupérer un message d'erreur
    Bonjour,
    Je voulais savoir s'il existe une procédure prédéfinie telle que error_message() en SQL Server 2005 pour récupérer les messages d'erreur en SQL Server 2000?
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Malheureusement cette fonction n'a pas d'équivalent sous SQL Server 2000.
    Néanmoins vous pouvez écrire une procédure stockée générique qui vous permettra d'enregistrer vos erreurs dans une table "centrale".

    Il vous suffit pour cela, dans toutes vos procédures stockées, de tester sir la variable @@ERROR vaut 0 ou non (elle vaut 0 s'il n'y a pas eu d'erreur) et de récupérer le message dans la table système master.dbo.sysmessages.

    Dans vos procédures, vous aurez donc, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO ...
     
    IF @@ERROR <> 0
    BEGIN
    	EXEC dbo.maProcedureStockeeDeGestionDesErreurs @@ERROR
    END

    Vous aurez par exemple la table centrale suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE TbErreurs
    (
    	IDErreur INT NOT NULL CONSTRAINT PK_TbErreur PRIMARY KEY,
    	dateErreur DATETIME NOT NULL CONSTRAINT DF_TbErreur_dateErreur DEFAULT (GETDATE()),
    	libelleErreur NVARCHAR(2048)
    )
    Et votre procédure stockée maProcedureStockeeDeGestionDesErreurs serait alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE PROCEDURE dbo.maProcedureStockeeDeGestionDesErreurs 
    	@_erreur INT
    AS
    BEGIN
    	INSERT INTO dbo.TbErreurs (libelleErreur)
    	SELECT description
    	FROM sysmessages
    	WHERE error = @_erreur
    	AND msglangid = 1036 -- 1033 pour l'avoir en anglais
    END
    @++

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    merci, je vais essayer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/11/2007, 23h28
  2. [SQL Server 2000] Récupérer dernier caractère
    Par Invité dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/07/2007, 15h35
  3. [SQL SERVER 2000] Récupérer le FOR XML
    Par Madinico dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/07/2007, 18h04
  4. Réponses: 2
    Dernier message: 21/03/2007, 17h26
  5. Réponses: 8
    Dernier message: 25/01/2006, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo