sys.sp_addmessage (Transact-SQL)

Şunlar için geçerlidir: SQL Server

SQL Server Database Engine'in bir örneğinde yeni bir kullanıcı tanımlı hata mesajı saklar. Kullanılarak sp_addmessage depolanan mesajlar katalog görünümü kullanılarak sys.messages görüntülenebilir.

Transact-SQL söz dizimi kuralları

Syntax

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

Arguments

[ @msgnum = ] msgnum

İletinin kimliği. @msgnumint, varsayılan olarak .NULL Kullanıcı tanımlı hata mesajları için @msgnum 50.001 ile 2.147.483.647 arasında bir tam sayı olabilir. @msgnum ve @lang birleşimi benzersiz olmalıdır; belirtilen dil için kimlik zaten mevcutsa, hata döner.

[ @severity = ] önem derecesi

Hatanın ciddiyet seviyesi. @severityküçük bir özelliktir, varsayılan olarak .NULL Geçerli seviyeler ise 125. Ciddiyetler hakkında daha fazla bilgi için Database Engine hata ciddiyetlerine bakınız.

[ @msgtext = ] Mesaj mesajı

Hata iletisinin metni. @msgtextnvarchar(255)'dir ve varsayılan olarak .NULL

[ @lang = ] N'lang'

Bu mesajın dili. @langsysname'dir, varsayılan NULLolarak . Aynı sunucuya birden fazla dil kurulabildiği için, @lang her mesajın yazıldığı dili belirler. @lang atıldığında, oturum için varsayılan dil dil olur.

[ @with_log = ] 'with_log'

Mesajın gerçekleştiğinde Windows uygulama günlüğüne yazılıp yazılmayacağını belirtir. @with_logvarchar(5)'dir ve varsayılan olarak .NULL

  • ise true, hata her zaman Windows uygulama günlüğüne yazılır.
  • Eğer false, hata her zaman Windows uygulama günlüğüne yazılmaz, ancak hatanın nasıl ortaya çıktığına bağlı olarak yazılabilir.

Sadece sistem yöneticisi sunucu rolündeki üyeler bu seçeneği kullanabilir.

Bir ileti Windows uygulama günlüğüne yazılırsa, veritabanı altyapısı hata günlüğü dosyasına da yazılır.

[ @replace = ] 'Yerine Getir'

Eğer dizide @replace belirtilirse, mevcut bir hata mesajı yeni mesaj metni ve şiddet seviyesiyle üzerine yazılır. @replacevarchar(7)'dir ve varsayılan olarak ' NULLdir. Bu seçenek zaten @msgnum varsa belirtilmelidir. Bir ABD İngilizcesi mesajını değiştirirseniz, aynı @msgnum olan diğer tüm dillerdeki tüm mesajlar için şiddet seviyesi değiştirilir.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Sonuç kümesi

Yok.

Remarks

İngilizce olmayan SQL Server sürümleri için, mesajın başka bir dil kullanılarak eklenebilmesi için ABD İngilizce versiyonunun zaten var olması gerekir. Mesajın iki versiyonunun şiddeti de aynı olmalı.

Parametre içeren mesajları yerelleştirirken, orijinal mesajdaki parametrelere karşılık gelen parametre numaralarını kullanın. Her parametre numarasının ardınca bir ünlem işareti (!) ekleyin.

Özgün ileti Yerel mesaj
Original message param 1: %s,<br />param 2: %d Localized message param 1: %1!,<br />param 2: %2!

Dil sözdizimi farklılıkları nedeniyle, yerel mesajdaki parametre numaraları orijinal mesajdaki gibi aynı sırada olmayabilir.

Permissions

Sistem yöneticisi veya serveradmin sabit sunucu rollerine üyelik gerektirir.

Examples

A. Özel bir mesaj tanımlayın

Aşağıdaki örnek, 'ye sys.messagesözel bir mesaj ekler.

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. İki dilde bir mesaj ekleyin

Aşağıdaki örnek önce ABD İngilizcesi bir mesaj ekliyor ve ardından aynı mesajı Fransızca ekliyor.

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. Parametrelerin sırasını değiştirme

Aşağıdaki örnek önce ABD İngilizcesi bir mesaj ekler, ardından parametre sırasının değiştiği yerel bir mesaj ekler. Mesajın yerel versiyonunda parametre sırası değişmiştir. Dizi parametreleri mesajda birinci ve ikinci sırada, sayısal parametre ise üçüncü sırada yer alır.

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