sp_addmessage (T-SQL)

Berlaku untuk:SQL Server

Menyimpan pesan kesalahan baru yang ditentukan pengguna dalam instans Mesin Database SQL Server. Pesan yang disimpan dengan menggunakan sp_addmessage dapat dilihat dengan menggunakan sys.messages tampilan katalog.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

[ @msgnum = ] msgnum

ID pesan. @msgnum int, dengan default NULL. @msgnum untuk pesan kesalahan yang ditentukan pengguna dapat berupa bilangan bulat antara 50.001 dan 2.147.483.647. Kombinasi @msgnum dan @lang harus unik; kesalahan dikembalikan jika ID sudah ada untuk bahasa yang ditentukan.

[ @severity = ] tingkat keparahan

Tingkat keparahan kesalahan. @severity kecil, dengan default NULL. Tingkat yang valid berasal dari 1 melalui 25. Untuk informasi selengkapnya tentang tingkat keparahan, lihat Tingkat keparahan kesalahan Mesin Database.

[ @msgtext = ] N'msgtext'

Teks pesan kesalahan. @msgtext adalah nvarchar(255), dengan default NULL.

[ @lang = ] N'lang'

Bahasa untuk pesan ini. @lang adalah sysname, dengan default NULL. Karena beberapa bahasa dapat diinstal pada server yang sama, @lang menentukan bahasa tempat setiap pesan ditulis. Saat @lang dihilangkan, bahasa adalah bahasa default untuk sesi tersebut.

[ @with_log = ] 'with_log'

Menentukan apakah pesan akan ditulis ke log aplikasi Windows ketika terjadi. @with_log adalah varchar(5), dengan default NULL.

  • Jika true, kesalahan selalu ditulis ke log aplikasi Windows.
  • Jika false, kesalahan tidak selalu ditulis ke log aplikasi Windows tetapi dapat ditulis, tergantung pada bagaimana kesalahan dimunculkan.

Hanya anggota peran server sysadmin yang dapat menggunakan opsi ini.

Jika pesan ditulis ke log aplikasi Windows, pesan juga ditulis ke file log kesalahan Mesin Database.

[ @replace = ] 'replace'

Jika ditentukan sebagai string @replace, pesan kesalahan yang ada ditimpa dengan teks pesan baru dan tingkat keparahan. @replace adalah varchar(7), dengan default NULL. Opsi ini harus ditentukan jika @msgnum sudah ada. Jika Anda mengganti pesan bahasa Inggris AS, tingkat keparahan diganti untuk semua pesan dalam semua bahasa lain yang memiliki @msgnum yang sama.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Tataan hasil

Tidak ada.

Keterangan

Untuk versi SQL Server non-bahasa Inggris, versi bahasa Inggris AS dari pesan harus sudah ada sebelum pesan dapat ditambahkan menggunakan bahasa lain. Tingkat keparahan dua versi pesan harus cocok.

Saat melokalisasi pesan yang berisi parameter, gunakan nomor parameter yang sesuai dengan parameter dalam pesan asli. Sisipkan tanda seru (!) setelah setiap nomor parameter.

Pesan asli Pesan yang dilokalkan
Original message param 1: %s,<br />param 2: %d Localized message param 1: %1!,<br />param 2: %2!

Karena perbedaan sintaks bahasa, nomor parameter dalam pesan yang dilokalkan mungkin tidak terjadi dalam urutan yang sama seperti dalam pesan asli.

Izin

Memerlukan keanggotaan dalam peran server tetap sysadmin atau serveradmin .

Contoh

J. Menentukan pesan kustom

Contoh berikut menambahkan pesan kustom ke 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. Menambahkan pesan dalam dua bahasa

Contoh berikut pertama-tama menambahkan pesan dalam bahasa Inggris A.S. lalu menambahkan pesan yang sama dalam bahasa Prancis.

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. Mengubah urutan parameter

Contoh berikut terlebih dahulu menambahkan pesan dalam bahasa Inggris AS, lalu menambahkan pesan yang dilokalkan di mana urutan parameter diubah. Dalam versi pesan yang dilokalkan, urutan parameter telah berubah. Parameter string berada di tempat pertama dan kedua dalam pesan, dan parameter numerik adalah tempat ketiga.

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 =
        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