sp_addmessage (Transact-SQL)

 

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse

Speichert eine neue benutzerdefinierte Fehlermeldung in einer SQL Server-Datenbankmodul-Instanz. Nachrichten, die mithilfe von gespeicherten Sp_addmessage können angezeigt werden, mithilfe der sys.messages -Katalogsicht angezeigt.

Gilt für: SQL Server (SQL Server 2008 bis zur aktuellen Version).

Topic link icon Transact-SQL-Syntaxkonventionen

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

[ @msgnum****= ] msg_id
Die ID der Meldung. Msg_id ist Int hat den Standardwert NULL. Msg_id für benutzerdefinierte Fehler Nachrichten können eine ganze Zahl zwischen 50.001 und 2.147.483.647 sein. Die Kombination von Msg_id und Sprache muss eindeutig sein; wenn die ID für die angegebene Sprache bereits vorhanden ist, wird ein Fehler zurückgegeben.

[ @severity = ]severity
Ist der Schweregrad des Fehlers an. Schweregrad ist "smallint" hat den Standardwert NULL. Die gültigen Werte reichen von 1 bis 25. Weitere Informationen zu den Schweregraden finden Sie unter Schweregrade von Datenbankmodulfehlern.

[ @msgtext = ] 'msg'
Ist der Text der Fehlermeldung. msg ist nvarchar(255) hat den Standardwert NULL.

[ @lang = ] 'language'
Die Sprache für diese Meldung. Sprache ist Sysname hat den Standardwert NULL. Da mehrere Sprachen auf dem gleichen Server installiert werden können Sprache gibt die Sprache, in der jede Nachricht geschrieben wird. Wenn Sprache wird weggelassen, die Sprache ist die Standardsprache für die Sitzung.

[ @with_log = ] { 'TRUE' | 'FALSE' }
Gibt an, ob die Meldung beim Auftreten des Fehlers in das Windows-Anwendungsprotokoll geschrieben werden soll. @with_logist varchar(5) hat den Standardwert "false". Bei TRUE wird der Fehler immer in das Windows-Anwendungsprotokoll geschrieben. Bei FALSE wird der Fehler nicht immer in das Windows-Anwendungsprotokoll geschrieben, sondern in Abhängigkeit davon, wie er ausgelöst wurde. Nur Mitglieder der Sysadmin -Serverrolle kann diese Option verwenden.

System_CAPS_ICON_note.jpg Hinweis


Wenn eine Meldung in das Windows-Anwendungsprotokoll geschrieben wird, wird sie auch in die Datenbankmodul-Fehlerprotokolldatei geschrieben.

[ @replace = ] 'replace'
Bei Angabe als die Zeichenfolge ersetzen, wird eine vorhandene Fehlermeldung mit neuen Meldung und Schweregrad überschrieben. Ersetzen Sie ist vom Datentyp varchar(7) hat den Standardwert NULL. Diese Option muss angegeben werden, wenn Msg_id ist bereits vorhanden. Wenn eine englischsprachige Meldung (USA) Englischsprachige Meldung, den Schweregrad wird für alle Nachrichten in allen anderen Sprachen, die dieselbe ersetzt Msg_id.

0 (Erfolg) oder 1 (Fehler)

Keine

In nicht englischsprachigen Versionen von SQL Server muss die englischsprachige Version der Meldung bereits vorhanden sein, bevor die Meldung mit einer anderen Sprache hinzugefügt werden kann. Der Schweregrad der beiden Versionen der Meldung muss übereinstimmen.

Verwenden Sie bei der Lokalisierung von Meldungen mit Parametern Parameternummern, die den Parametern der Originalmeldung entsprechen. Fügen Sie nach jeder Parameternummer ein Ausrufezeichen (!) ein.

OriginalmeldungLokalisierte Meldung
'Originalmeldung Parameter 1: %s,

Parameter 2: %d'
'Lokalisierte Meldung Parameter 1:

Parameter 2: %2!'

Wegen Unterschieden in der Sprachsyntax weisen die Parameternummern in der lokalisierten Meldung möglicherweise eine andere Reihenfolge als in der Originalmeldung auf.

Erfordert die Mitgliedschaft in den festen Serverrollen sysadmin und serveradmin .

A. Definieren einer benutzerdefinierten Meldung

Im folgenden Beispiel wird eine benutzerdefinierte Meldung 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. Hinzufügen einer Meldung in zwei Sprachen

Im folgenden Beispiel wird zuerst eine englischsprachige Meldung (USA) und anschließend die gleiche Meldung in Französisch hinzugefügt.

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. Ändern der Reihenfolge von Parametern

Im folgenden Beispiel wird zuerst eine englischsprachige Meldung (USA) hinzugefügt und anschließend wird eine lokalisierte Meldung hinzugefügt, in der die Reihenfolge der Parameter geändert wurde.

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.  

RAISERROR (Transact-SQL)
Sp_altermessage (Transact-SQL)
Sp_dropmessage (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)

Community-Beiträge

HINZUFÜGEN
Anzeigen: