Udostępnij za pośrednictwem


sp_addmessage (języka Transact-SQL)

Zapisuje nowy komunikat Błąd zdefiniowany przez użytkownika w wystąpienie Aparat baz danych programu SQL Server.Wiadomości przechowywane za pomocą sp_addmessage można przeglądać za pomocą sys.messages katalogu widoku.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • [ @msgnum= ] msg_id
    Jest to identyfikator wiadomości.msg_idjest int Domyślna wartość NULL.msg_idBłąd zdefiniowany przez użytkownika wiadomości może być liczbą całkowitą pomiędzy 50,001 a 2 147 483 647.Kombinacja msg_id i language muszą być unikatowe; Jeśli identyfikator już istnieje dla określonego języka, zwracany jest błąd.

  • [ @ ważności = ]severity
    Jest wskaźnik poziom błędu.severityjest smallint Domyślna wartość NULL.Prawidłowe poziomy są od 1 do 25.Aby uzyskać więcej informacji o severities, zobacz Severities Błąd aparatu bazy danych.

  • [ @ msgtext = ] 'msg"
    Jest to tekst komunikatu o błędzie.msgjest nvarchar(255) Domyślna wartość NULL.

  • [ @lang = ] 'language'
    To język dla tej wiadomości.languagejest sysname Domyślna wartość NULL.Ponieważ wielu języków można zainstalować na tym samym serwerze, language Określa język, w którym napisano każdej wiadomości.Gdy language jest pominięty, językiem jest język domyślny dla sesja.

  • [ @with_log = ] { 'TRUE' | 'FALSE' }
    To, czy wiadomość jest zapisywane w dzienniku aplikacji systemu Windows, jeśli występuje on.@ with_log jest varchar(5) Domyślna wartość FALSE.Jeśli wartość TRUE, błąd jest zawsze zapisywane w dzienniku aplikacji systemu Windows.Jeśli ma wartość FAŁSZ, błąd nie jest zawsze zapisywany w dzienniku aplikacji systemu Windows, ale mogą być zapisywane w zależności od tego, jak podniesiono błędu.Tylko członkowie sysadmin rolę serwera można użyć tej opcji.

    Ostrzeżenie

    Jeśli wiadomości są zapisywane w dzienniku aplikacji systemu Windows, są również zapisywane na Aparat baz danych, plikdziennik błędów .

  • [ Zamień @ = ] 'replace"
    Jeśli określony jako ciąg replace, istniejący komunikat o błędzie jest zastępowany nowy tekst i ważności wiadomości poziom.replacejest varchar(7) Domyślna wartość NULL.Należy określić tę opcję, jeśli msg_id już istnieje.Jeśli zastąpisz amerykańskiZastępuje wiadomości angielskiej, poziom ważności zdarzeń dla wszystkich wiadomości w innych językach, które mają taki sam msg_id.

Wartości kodów powrotnych

0 (sukces) lub 1 (błąd)

Zestawy wyników

Brak

Uwagi

Dla wersji innej niż angielska SQL Server, USAAngielska wersja wiadomości musi już istnieć wiadomości można dodać przy użyciu innego języka.Wskaźnik ważności dwóch wersji wiadomości muszą być zgodne.

Podczas lokalizowanie wiadomości zawierające parametry, należy użyć parametru liczb, które odpowiadają parametrów w oryginalnej wiadomości.Wstaw numer każdego parametru wykrzyknik (!).

Oryginalna wiadomość

Zlokalizowane wiadomości

"oryginalny komunikat param 1: % s,

param 2: % d "

"zlokalizowane wysyłanych wiadomości 1: %1!,

param 2: %2!'

Ze względu na różnice składni języka numery parametr zlokalizowane wiadomości nie mogą występować w tej samej sekwencji w wiadomości oryginalnej.

Uprawnienia

Wymaga członkostwa w sysadmin i serveradmin stałe role serwera.

Przykłady

A.Definiowanie niestandardowych wiadomości

W następującym przykładzie dodano komunikat niestandardowy do 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.Dodawanie wiadomości w dwóch językach

W następującym przykładzie dodano najpierw wiadomość w USAJęzyk angielski, a następnie dodaje tę samą wiadomość w języku francuskim.

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.Zmiana kolejności parametrów

W następującym przykładzie dodano najpierw wiadomość w USAJęzyk angielski oraz dodaje zlokalizowane wiadomości zmianie kolejność parametrów.

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.