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.
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.
Re-run 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