sys.sp_addmessage (Transact-SQL)

A következőkre vonatkozik:SQL Server

Új felhasználó-definiált hibaüzenetet tárol az SQL Server adatbázismotor egy példányában. A használatával sp_addmessage tárolt üzenetek a katalógus nézet segítségével is megtekinthetők sys.messages .

Transact-SQL szintaxis konvenciók

Syntax

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

Arguments

[ @msgnum = ] msgnum

Az üzenet azonosítója. @msgnumint, alapértelmezés NULL. @msgnum a felhasználó által definiált hibaüzenetek esetén egy egész szám lehet 50 001 és 2 147 483 647 között. A @msgnum és @lang kombinációjának egyedinek kell lennie; hiba jelenik meg, ha az ID már létezik a megadott nyelvhez.

[ @severity = ] súlyosság

A hiba súlyossága. @severitykicsi, alapértelmezés NULL. Az érvényes szintek a 25.1 További információért a súlyosságokról lásd: Database Engine hiba súlyosság.

[ @msgtext = ] N'msgtext'

A hibaüzenet szövege. @msgtextnvarchar(255), alapértelmezett értéke NULL.

[ @lang = ] N'lang'

Az üzenet nyelve. @langa sysname, alapértelmezett értéke NULL. Mivel ugyanazon a szerveren több nyelv telepíthető, @lang meghatározza az egyes üzenetek által írt nyelven. Ha @lang kihagyjuk, a szekció alapértelmezett nyelve a nyelv.

[ @with_log = ] 'with_log'

Megadja, hogy az üzenetet a Windows alkalmazásnaplójába kell írni, amikor ez megjelenik. @with_loga varchar(5), alapértelmezett NULLérték .

  • Ha truea hiba mindig a Windows-alkalmazásnaplóba van írva.
  • Ha false, a hiba nem mindig van írva a Windows alkalmazásnaplóba, de megírható, attól függően, hogyan keletkezett a hiba.

Csak a rendszergazdai szerver tagjai használhatják ezt az opciót.

Ha egy üzenet a Windows-alkalmazásnaplóba van írva, az az adatbázismotor hibanapló-fájljába is bekerül.

[ @replace = ] 'helyettesítés'

Ha a @replace stringként van megadva, egy meglévő hibaüzenetet új üzenet szöveg és súlyossági szint ír felül. @replacevarchar(7), alapértelmezett értéke NULL. Ezt az opciót meg kell határozni, ha @msgnum már létezik. Ha egy amerikai angol üzenetet cserélsz, akkor a súlyossági szint minden más nyelven megjelenő üzenetre is cserélődik, amelyek ugyanazzal a @msgnum rendelkeznek.

Kódértékek visszaadása

0 (sikeres) vagy 1 (hiba).

Eredményhalmaz

Nincs.

Remarks

Az SQL Server nem angol verzióinál az üzenet amerikai angol verziójának már léteznie kell, mielőtt az üzenetet más nyelven hozzáadhatnánk. Az üzenet két változatának súlyosságának meg kell egyeznie.

Paramétereket tartalmazó üzenetek lokalizálásakor használjunk olyan paraméterszámokat, amelyek megfelelnek az eredeti üzenet paramétereinek. Helyezz be felkiáltójelet (!) minden paraméterszám után.

Eredeti üzenet Lokalizált üzenet
Original message param 1: %s,<br />param 2: %d Localized message param 1: %1!,<br />param 2: %2!

A nyelvi szintaxiskülönbségek miatt a lokalizált üzenetben szereplő paraméterszámok nem feltétlenül jelennek meg ugyanabban a sorrendben, mint az eredeti üzenetben.

Permissions

Tagság szükséges a rendszergazdai vagy serveradmin fix szerver szerepekhez.

Examples

A. Egyedi üzenet definiálása

A következő példa egyedi üzenetet ad hozzá .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. Üzenet hozzáadása két nyelven

A következő példa először egy üzenetet ad hozzá az amerikai angolul, majd ugyanazt az üzenetet franciául.

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. Paraméterek sorrendjének módosítása

A következő példa először egy amerikai angol üzenetet ad hozzá, majd egy lokalizált üzenetet ad, amelyben a paramétersorrend megváltozik. Az üzenet lokalizált változatában a paramétersorrend megváltozott. A string paraméterek az üzenetben az első és második helyen vannak, a numerikus paraméter pedig a harmadik helyen.

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