Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 .
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
Související obsah
- RAISERROR (Transact-SQL)
- sys.sp_altermessage (Transact-SQL)
- sys.sp_dropmessage (Transact-SQL)
- uložené procedury systému (Transact-SQL)