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

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Armazena uma nova mensagem de erro definida pelo usuário em uma instância do Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine.Stores a new user-defined error message in an instance of the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine. As mensagens armazenadas usando sp_addmessage podem ser exibidos usando o sys. messages exibição do catálogo.Messages stored by using sp_addmessage can be viewed by using the sys.messages catalog view.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

[ \@msgnum = ] msg_id É a ID da mensagem.[ \@msgnum = ] msg_id Is the ID of the message. msg_id está int com um padrão NULL.msg_id is int with a default of NULL. msg_id erro definido pelo usuário de mensagens podem ser um inteiro entre 50.001 e 2.147.483.647.msg_id for user-defined error messages can be an integer between 50,001 and 2,147,483,647. A combinação de msg_id e idioma deve ser exclusiva; um erro será retornado se a ID já existe para o 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 É o nível de gravidade do erro.[ \@severity = ]severity Is the severity level of the error. gravidade está smallint com um padrão NULL.severity is smallint with a default of NULL. Os níveis válidos são de 1 a 25.Valid levels are from 1 through 25. Para obter mais informações sobre severidades, consulte Severidade de erro do mecanismo de banco de dados.For more information about severities, see Database Engine Error Severities.

[ \@msgtext = ] 'msg' É o texto da mensagem de erro.[ \@msgtext = ] 'msg' Is the text of the error message. msg está nvarchar (255) com um padrão NULL.msg is nvarchar(255) with a default of NULL.

[ \@lang = ] 'language' É o idioma desta mensagem.[ \@lang = ] 'language' Is the language for this message. linguagem está sysname com um padrão NULL.language is sysname with a default of NULL. Como vários idiomas podem ser instalados no mesmo servidor, linguagem Especifica o idioma em que cada mensagem é gravada.Because multiple languages can be installed on the same server, language specifies the language in which each message is written. Quando linguagem é omitido, o idioma é o idioma padrão para a sessão.When language is omitted, the language is the default language for the session.

[ \@with_log = ] { 'TRUE' | 'FALSE' } É se a mensagem deve ser gravada no log de aplicativo do Windows quando ele ocorre.[ \@with_log = ] { 'TRUE' | 'FALSE' } Is whether the message is to be written to the Windows application log when it occurs. @with_log está varchar(5) com um padrão de FALSE.@with_log is varchar(5) with a default of FALSE. Se for TRUE, o erro sempre será gravado no log do aplicativo do Windows.If TRUE, the error is always written to the Windows application log. Se for FALSE, o erro nem sempre será gravado no log do aplicativo do Windows, mas poderá ser gravado dependendo de como foi gerado.If FALSE, the error is not always written to the Windows application log but can be written, depending on how the error was raised. Somente os membros dos sysadmin função de servidor pode usar essa opção.Only members of the sysadmin server role can use this option.

Observação

Se uma mensagem for gravada no log do aplicativo do Windows, ela também será gravada no arquivo de log de erros do Mecanismo de Banco de DadosDatabase Engine.If a message is written to the Windows application log, it is also written to the Mecanismo de Banco de DadosDatabase Engine error log file.

[ \@replace = ] 'replace' Se for especificado como a cadeia de caracteres substituir, uma mensagem de erro existente será substituída com o novo nível de texto e a gravidade da mensagem.[ \@replace = ] 'replace' If specified as the string replace, an existing error message is overwritten with new message text and severity level. Substitua está varchar(7) com um padrão NULL.replace is varchar(7) with a default of NULL. Essa opção deve ser especificada se msg_id já existe.This option must be specified if msg_id already exists. Se você substituir uma mensagem Mensagem em inglês, o nível de severidade é substituída para todas as mensagens em todos os outros idiomas que têm o mesmo 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 do código de retornoReturn Code Values

0 (êxito) ou 1 (falha)0 (success) or 1 (failure)

Conjuntos de resultadosResult Sets

NenhumNone

ComentáriosRemarks

Para versões diferentes do inglês do SQL ServerSQL Server, EUA A versão em inglês de uma mensagem já deve existir antes que a mensagem pode ser adicionada usando outro 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. A severidade das duas versões da mensagem deve corresponder.The severity of the two versions of the message must match.

Ao localizar mensagens contendo parâmetros, use números de parâmetro que correspondem aos parâmetros da mensagem original.When localizing messages that contain parameters, use parameter numbers that correspond to the parameters in the original message. Insira um ponto de exclamação (!) depois de cada número de parâmetro.Insert an exclamation point (!) after each parameter number.

Mensagem originalOriginal message Mensagem localizadaLocalized message
'Original message param 1: %s,'Original message param 1: %s,

param 2: % d'param 2: %d'
'Localized message param 1: %1!,'Localized message param 1: %1!,

param 2: %2!'param 2: %2!'

Por causa das diferenças de sintaxe, os número de parâmetro na mensagem localizada podem não ocorrer na mesma sequência que a mensagem 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.

PermissõesPermissions

Requer associação na sysadmin ou serveradmin funções de servidor fixas.Requires membership in the sysadmin or serveradmin fixed server roles.

ExemplosExamples

A.A. Definindo uma mensagem personalizadaDefining a custom message

O exemplo a seguir adiciona uma mensagem personalizada à 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. Adicionando uma mensagem em dois idiomasAdding a message in two languages

O exemplo a seguir primeiro adiciona uma mensagem nos Estados Unidos Inglês e, em seguida, adiciona a mesma mensagem em 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. Alterando a ordem dos parâmetrosChanging the order of parameters

O exemplo a seguir primeiro adiciona uma mensagem nos Estados Unidos Inglês e, em seguida, adiciona a mensagem localizada na qual a ordem dos parâmetros é alterada.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.  

Consulte tambémSee Also

RAISERROR (Transact-SQL) RAISERROR (Transact-SQL)
sp_altermessage (Transact-SQL) sp_altermessage (Transact-SQL)
sp_dropmessage (Transact-SQL) sp_dropmessage (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)System Stored Procedures (Transact-SQL)