sp_addmessage (Transact-SQL)
S’applique à :SQL Server
Stocke un nouveau message d’erreur défini par l’utilisateur dans une instance du moteur de base de données SQL Server. Les messages stockés à l’aide de sp_addmessage peuvent être affichés à l’aide de la vue catalogue sys.messages .
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_addmessage [ @msgnum= ] msg_id , [ @severity= ] severity , [ @msgtext= ] 'msg'
[ , [ @lang= ] 'language' ]
[ , [ @with_log= ] { 'TRUE' | 'FALSE' } ]
[ , [ @replace= ] 'replace' ]
Arguments
[ @msgnum = ] msg_id
ID du message. msg_id est int avec la valeur NULL par défaut. msg_id pour les messages d’erreur définis par l’utilisateur peut être un entier compris entre 50 001 et 2 147 483 647. La combinaison de msg_id et de langue doit être unique; une erreur est retournée si l’ID existe déjà pour la langue spécifiée.
[ @severity = ]severity
Niveau de gravité de l’erreur. la gravité est smallint avec la valeur null par défaut. Les niveaux valides vont de 1 à 25. Pour plus d’informations sur les niveaux de gravité, consultez Niveaux de gravité des erreurs du moteur de base de données.
[ @msgtext = ] 'msg'
Texte du message d’erreur. msg est nvarchar(255) avec la valeur NULL par défaut.
[ @lang = ] 'language'
Langue de ce message. language est sysname avec une valeur null par défaut. Étant donné que plusieurs langues peuvent être installées sur le même serveur, la langue spécifie la langue dans laquelle chaque message est écrit. Lorsque la langue est omise, la langue est la langue par défaut de la session.
[ @with_log = ] { 'TRUE' | 'FALSE' }
Indique si le message doit être écrit dans le journal des applications Windows lorsqu’il se produit. @with_log est varchar(5) avec la valeur par défaut FALSE. Si sa valeur est TRUE, l'erreur est automatiquement écrite dans le journal des applications Windows. Si sa valeur est FALSE, l'erreur n'est pas automatiquement écrite dans le journal des applications Windows ; c'est la façon dont elle a été déclenchée qui détermine si l'erreur sera ou non écrite dans le journal. Seuls les membres du rôle serveur sysadmin peuvent utiliser cette option.
Notes
Si un message est écrit dans le journal des applications Windows, il est également écrit dans le fichier journal des erreurs du moteur de base de données.
[ @replace = ] 'replace'
S’il est spécifié comme valeur de remplacement de chaîne, un message d’erreur existant est remplacé par le nouveau texte du message et le nouveau niveau de gravité. replace est varchar(7) avec la valeur null par défaut. Cette option doit être spécifiée si msg_id existe déjà. Si vous remplacez un message anglais américain, le niveau de gravité est remplacé pour tous les messages dans toutes les autres langues qui ont la même msg_id.
Codet de retour
0 (réussite) ou 1 (échec)
Jeux de résultats
None
Remarques
Pour les versions non anglaises de SQL Server, la version anglaise américaine d’un message doit déjà exister avant que le message puisse être ajouté à l’aide d’une autre langue. Le degré de gravité des deux versions du message doit correspondre.
Lors de la localisation des messages qui contiennent des paramètres, utilisez les numéros de paramètres correspondant aux paramètres des messages d'origine. Insérez un point d'exclamation (!) après chaque numéro de paramètre.
Message d'origine | Message localisé |
---|---|
''Message d'origine param 1 : %s, param 2 : %d' |
''Message localisé param 1 : %1!, param 2 : %2!' |
La syntaxe pouvant différer d'une langue à l'autre, il se peut que les numéros de paramètres apparaissent dans un ordre différent par rapport au message d'origine.
Autorisations
Nécessite l’appartenance aux rôles serveur fixe sysadmin ou serveradmin .
Exemples
R. Définition d'un message personnalisé
L’exemple suivant ajoute un message personnalisé à sys.messages.
USE master;
GO
EXEC sp_addmessage 50001, 16,
N'Percentage expects a value between 20 and 100.
Please reexecute with a more appropriate value.';
GO
B. Ajout d'un message en deux langues
L'exemple suivant ajoute d'abord un message en anglais, puis ajoute ce même message en français.
USE master;
GO
EXEC sp_addmessage @msgnum = 60000, @severity = 16,
@msgtext = N'The item named %s already exists in %s.',
@lang = 'us_english';
EXEC sp_addmessage @msgnum = 60000, @severity = 16,
@msgtext = N'L''élément nommé %1! existe déjà dans %2!',
@lang = 'French';
GO
C. Modification de l'ordre des paramètres
L'exemple suivant ajoute d'abord un message en anglais, puis un message localisé dans lequel l'ordre des paramètres est modifié.
USE master;
GO
EXEC sp_addmessage
@msgnum = 60000,
@severity = 16,
@msgtext =
N'This is a test message with one numeric
parameter (%d), one string parameter (%s),
and another string parameter (%s).',
@lang = 'us_english';
EXEC sp_addmessage
@msgnum = 60000,
@severity = 16,
@msgtext =
-- In the localized version of the message,
-- the parameter order has changed. The
-- string parameters are first and second
-- place in the message, and the numeric
-- parameter is third place.
N'Dies ist eine Testmeldung mit einem
Zeichenfolgenparameter (%3!),
einem weiteren Zeichenfolgenparameter (%2!),
und einem numerischen Parameter (%1!).',
@lang = 'German';
GO
-- Changing the session language to use the U.S. English
-- version of the error message.
SET LANGUAGE us_english;
GO
RAISERROR(60000,1,1,15,'param1','param2') -- error, severity, state,
GO -- parameters.
-- Changing the session language to use the German
-- version of the error message.
SET LANGUAGE German;
GO
RAISERROR(60000,1,1,15,'param1','param2'); -- error, severity, state,
GO -- parameters.
Voir aussi
RAISERROR (Transact-SQL)
sp_altermessage (Transact-SQL)
sp_dropmessage (Transact-SQL)
Procédures stockées système (Transact-SQL)