sys.sp_addmessage (Transact-SQL)

platí pro:SQL Server

Ukládá novou uživatelsky definovanou chybovou zprávu v instanci Databázový stroj systému SQL Server. Zprávy uložené pomocí lze sp_addmessage zobrazit pomocí katalogového pohledu sys.messages .

Transact-SQL konvence syntaxe

Syntax

sys.sp_addmessage
    [ [ @msgnum = ] msgnum ]
    [ , [ @severity = ] severity ]
    [ , [ @msgtext = ] N'msgtext' ]
    [ , [ @lang = ] N'lang' ]
    [ , [ @with_log = ] { 'true' | 'false' } ]
    [ , [ @replace = ] 'replace' ]
[ ; ]

Arguments

[ @msgnum = ] msgnum

ID zprávy. @msgnum je int, s výchozím nastavením NULL. @msgnum pro uživatelsky definované chybové zprávy může být celé číslo mezi 50 001 a 2 147 483 647. Kombinace @msgnum a @lang musí být jedinečná; chyba se vrátí, pokud ID již existuje pro daný jazyk.

[ @severity = ] závažnost

Závažnost chyby. @severity je smallint, s výchozím hodnotou NULL. Platné úrovně jsou od 1 do 25. Pro více informací o závažnosti chyb viz Database Engine error gravities.

[ @msgtext = ] N'msgtext'

Text chybové zprávy. @msgtext je nvarchar(255), s výchozím hodnotou NULL.

[ @lang = ] N'lang'

Jazyk pro tuto zprávu. @lang je sysname, s výchozím nastavením NULL. Protože na stejný server lze nainstalovat více jazyků, @lang specifikuje jazyk, ve kterém je každá zpráva napsána. Když je @lang vynechán, jazyk je výchozím jazykem pro danou relaci.

[ @with_log = ] 'with_log'

Specifikuje, zda má být zpráva zapsána do logu aplikací Windows, když k ní dojde. @with_log je varchar(5), s výchozím hodnotou NULL.

  • Pokud truese chyba vždy zapíše do protokolu aplikace systému Windows.
  • Pokud false, chyba se nemusí vždy zapsat do logu aplikací Windows, ale může být zapsána v závislosti na tom, jak byla chyba vyvolána.

Tuto možnost mohou používat pouze členové role správce systému .

Pokud se zpráva zapíše do protokolu aplikace systému Windows, zapíše se také do souboru protokolu chyb databázového stroje.

[ @replace = ] 'nahrazit'

Pokud je řetězec @replace, existující chybová zpráva je přepsána novým textem zprávy a úrovní závažnosti. @replace je varchar(7), s výchozím hodnotou NULL. Tato možnost musí být specifikována, pokud již @msgnum existuje. Pokud nahradíte zprávu v americké angličtině, úroveň závažnosti se nahradí pro všechny zprávy ve všech ostatních jazycích, které mají stejnou @msgnum.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Sada výsledků

Žádné.

Remarks

U neanglických verzí SQL Server musí americká anglická verze zprávy již existovat, než může být zpráva přidána v jiném jazyce. Závažnost obou verzí zprávy musí odpovídat.

Při lokalizaci zpráv obsahujících parametry použijte čísla parametrů odpovídající parametrům v původní zprávě. Za každé číslo parametru vložte vykřičník (!).

Původní zpráva Lokalizovaná zpráva
Original message param 1: %s,<br />param 2: %d Localized message param 1: %1!,<br />param 2: %2!

Kvůli rozdílům v jazykové syntaxi nemusí čísla parametrů v lokalizované zprávě být ve stejném pořadí jako v původní zprávě.

Permissions

Vyžaduje členství v rolích správce systému nebo správce pevného serveru.

Examples

A. Definujte vlastní zprávu

Následující příklad přidává vlastní zprávu do sys.messages.

USE master;
GO

EXECUTE sp_addmessage
    50001,
    16,
    N'Percentage expects a value between 20 and 100. Re-run with a more appropriate value.';
GO

B. Přidejte zprávu ve dvou jazycích

Následující příklad nejprve přidá zprávu v americké angličtině a poté stejnou zprávu ve francouzštině.

USE master;
GO

EXECUTE sp_addmessage
    @msgnum = 60000,
    @severity = 16,
    @msgtext = N'The item named %s already exists in %s.',
    @lang = 'us_english';

EXECUTE sp_addmessage
    @msgnum = 60000,
    @severity = 16,
    @msgtext = N'L''élément nommé %1! existe déjà dans %2!',
    @lang = 'French';
GO

C. Změna pořadí parametrů

Následující příklad nejprve přidá zprávu v americké angličtině a poté lokalizovanou zprávu, ve které se mění pořadí parametrů. V lokalizované verzi zprávy se pořadí parametrů změnilo. Parametry řetězce jsou na prvním a druhém místě ve zprávě a číselný parametr je na třetím místě.

USE master;
GO

EXECUTE 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';

EXECUTE sp_addmessage
    @msgnum = 60000,
    @severity = 16,
    @msgtext = 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');
GO

-- Changing the session language to use the German
-- version of the error message.
SET LANGUAGE German;
GO

RAISERROR (60000, 1, 1, 15, 'param1', 'param2');
GO