sp_addmessage (Transact-SQL)sp_addmessage (Transact-SQL)

SE APLICA A: síSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Almacena un nuevo mensaje de error definido por el usuario en una instancia del Motor de base de datos de SQL ServerSQL Server Database Engine.Stores a new user-defined error message in an instance of the Motor de base de datos de SQL ServerSQL Server Database Engine. Los mensajes almacenados mediante sp_addmessage puede verse mediante la sys.messages vista de catálogo.Messages stored by using sp_addmessage can be viewed by using the sys.messages catalog view.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

  
sp_addmessage [ @msgnum= ] msg_id , [ @severity= ] severity , [ @msgtext= ] 'msg'   
     [ , [ @lang= ] 'language' ]   
     [ , [ @with_log= ] { 'TRUE' | 'FALSE' } ]   
     [ , [ @replace= ] 'replace' ]   

ArgumentosArguments

[ \@msgnum = ] msg_id Es el identificador del mensaje.[ \@msgnum = ] msg_id Is the ID of the message. msg_id es int con el valor predeterminado es NULL.msg_id is int with a default of NULL. msg_id de error definido por el usuario, los mensajes pueden ser un entero entre 50.001 y 2.147.483.647.msg_id for user-defined error messages can be an integer between 50,001 and 2,147,483,647. La combinación de msg_id y lenguaje debe ser única; se devuelve un error si ya existe el identificador para el idioma especificado.The combination of msg_id and language must be unique; an error is returned if the ID already exists for the specified language.

[ \@severity = ]severity Es el nivel de gravedad del error.[ \@severity = ]severity Is the severity level of the error. gravedad es smallint con el valor predeterminado es NULL.severity is smallint with a default of NULL. Los niveles válidos son de 1 a 25.Valid levels are from 1 through 25. Para obtener más información sobre los niveles de gravedad, vea Niveles de gravedad de error del motor de base de datos.For more information about severities, see Database Engine Error Severities.

[ \@msgtext = ] 'msg' Es el texto del mensaje de error.[ \@msgtext = ] 'msg' Is the text of the error message. msg es nvarchar (255) con el valor predeterminado es NULL.msg is nvarchar(255) with a default of NULL.

[ \@lang = ] 'language' Es el idioma para este mensaje.[ \@lang = ] 'language' Is the language for this message. lenguaje es sysname con el valor predeterminado es NULL.language is sysname with a default of NULL. Dado que se pueden instalar varios idiomas en el mismo servidor, lenguaje especifica el idioma en que está escrito cada mensaje.Because multiple languages can be installed on the same server, language specifies the language in which each message is written. Cuando lenguaje es el idioma se omite, es el idioma predeterminado para la sesión.When language is omitted, the language is the default language for the session.

[ \@with_log = ] { 'TRUE' | 'FALSE' } Es si el mensaje es para escribirse en el registro de aplicación de Windows cuando se produzca.[ \@with_log = ] { 'TRUE' | 'FALSE' } Is whether the message is to be written to the Windows application log when it occurs. @with_log es varchar (5) con el valor predeterminado es FALSE.@with_log is varchar(5) with a default of FALSE. Si es TRUE, el error siempre se escribe en el registro de aplicación Windows.If TRUE, the error is always written to the Windows application log. Si es FALSE, el error no siempre se escribe en el registro de aplicación Windows, pero se puede escribir, dependiendo de cómo se haya producido el error.If FALSE, the error is not always written to the Windows application log but can be written, depending on how the error was raised. Solo los miembros de la sysadmin rol de servidor puede usar esta opción.Only members of the sysadmin server role can use this option.

Nota

Si se escribe un mensaje en el registro de aplicación Windows, también se escribe en el archivo de registro de errores del Motor de base de datosDatabase Engine.If a message is written to the Windows application log, it is also written to the Motor de base de datosDatabase Engine error log file.

[ \@replace = ] 'replace' Si se especifica como la cadena reemplazar, un mensaje de error existente se sobrescribe con el nuevo nivel de texto y la gravedad del mensaje.[ \@replace = ] 'replace' If specified as the string replace, an existing error message is overwritten with new message text and severity level. Reemplace es varchar(7) con el valor predeterminado es NULL.replace is varchar(7) with a default of NULL. Esta opción debe especificarse si msg_id ya existe.This option must be specified if msg_id already exists. Si sustituye un EE. UU. Se reemplaza el mensaje en inglés, el nivel de gravedad para todos los mensajes en todos los otros lenguajes que tienen el mismo msg_id.If you replace a U.S. English message, the severity level is replaced for all messages in all other languages that have the same msg_id.

Valores de código de retornoReturn Code Values

0 (correcto) o 1 (error)0 (success) or 1 (failure)

Conjuntos de resultadosResult Sets

NoneNone

ComentariosRemarks

Para las versiones no inglesas de SQL ServerSQL Server, Estados Unidos. Versión en inglés de un mensaje debe existir antes de que el mensaje se puede agregar otro idioma.For non-English versions of SQL ServerSQL Server, the U.S. English version of a message must already exist before the message can be added using another language. La gravedad de las dos versiones del mensaje debe coincidir.The severity of the two versions of the message must match.

Para traducir mensajes que contienen parámetros, utilice los números de parámetro que corresponden a los parámetros del mensaje original.When localizing messages that contain parameters, use parameter numbers that correspond to the parameters in the original message. Inserte un signo de exclamación (!) detrás de cada número de parámetro.Insert an exclamation point (!) after each parameter number.

Mensaje originalOriginal message Mensaje traducidoLocalized message
‘Parámetro 1 del mensaje original: %s,'Original message param 1: %s,

parámetro 2: %d'param 2: %d'
‘Parámetro 1 del mensaje traducido: %1!,'Localized message param 1: %1!,

parámetro 2: %2!'param 2: %2!'

Debido a las diferencias sintácticas que existen entre los idiomas, puede que los números de los parámetros del mensaje traducido no aparezcan en la misma secuencia que en el mensaje original.Because of language syntax differences, the parameter numbers in the localized message may not occur in the same sequence as in the original message.

PermisosPermissions

Debe pertenecer a la sysadmin o serveradmin roles fijos de servidor.Requires membership in the sysadmin or serveradmin fixed server roles.

EjemplosExamples

A.A. Definir un mensaje personalizadoDefining a custom message

En el ejemplo siguiente se agrega un mensaje personalizado a sys.messages.The following example adds a custom message to 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.B. Agregar un mensaje en dos idiomasAdding a message in two languages

En el ejemplo siguiente se agrega primero un mensaje en EE. UU. La versión en inglés y, a continuación, agrega el mismo mensaje en francés.The following example first adds a message in U.S. English and then adds the same message in French.

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.C. Cambiar el orden de parámetrosChanging the order of parameters

En el ejemplo siguiente se agrega primero un mensaje en EE. UU. La versión en inglés y, a continuación, agrega un mensaje localizado en el que se cambia el orden de los parámetros.The following example first adds a message in U.S. English, and then adds a localized message in which the parameter order is changed.

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.  

Vea tambiénSee Also

RAISERROR (Transact-SQL) RAISERROR (Transact-SQL)
sp_altermessage (Transact-SQL) sp_altermessage (Transact-SQL)
sp_dropmessage (Transact-SQL) sp_dropmessage (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)System Stored Procedures (Transact-SQL)