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
Version imprimable
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
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:
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 :
Et votre procédure stockée maProcedureStockeeDeGestionDesErreurs serait alors :Code:
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) )
@++ ;)Code:
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
merci, je vais essayer. :ccool: