sp_addmessage (Transact-SQL)

Yeni bir kullanıcı tanımlı bir hata iletisi içinde bir kopyasını saklar SQL Server Database Engine. Kullanılarak saklanan iletiler sp_addmessage kullanarak görüntülenebilir.sys.Messages kataloğunu görüntüleyin.

Topic link iconTransact-SQL sözdizimi kuralları

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

Bağımsız değişkenler

  • [ @msgnum= ] msg_id
    Is the ID of the message.msg_id is int with a default of NULL.msg_id for user-defined error messages can be an integer between 50,001 and 2,147,483,647.Birleşimi msg_id ve language benzersiz; olması için belirtilen dil KIMLIĞI zaten varsa bir hata döndürülür.

  • [ @severity = ]severity
    Is the severity level of the error.severity is smallint with a default of NULL.Geçerli düzey 1'den 25 var.Severities hakkında daha fazla bilgi için bkz: veritabanı altyapısı hatası Severities.

  • [ @msgtext = ] 'msg'
    Is the text of the error message.msg is nvarchar(255) with a default of NULL.

  • [ @lang = ] 'language'
    Is the language for this message.language is sysname with a default of NULL.Aynı sunucuda birden çok dil yüklü language her iletinin yazıldığı dili belirler. Ne zaman language olan atlanırsa varsayılan dil bu oturum için dildir.

  • [ with_log = { 'DOĞRU' | 'YANLıŞ'}
    Iletinin oluştuğunda, Windows Uygulama günlüğüne yazılacak olup olmadığını belirtilir.@ with_log is varchar(5) bir varsayılan yanlış. Hata, her zaman TRUE ise, Windows Uygulama günlüğüne yazılır.YANLıŞ'sa, hata her zaman Windows Uygulama günlüğüne yazılır, ancak, ne hata yükseltilmiş bağlı olarak yazılabilir.Yalnızca üyeleri sysadmin sunucu rolünü, bu seçeneği kullanabilirsiniz.

    Not

    Windows Uygulama günlüğüne bir ileti yazıldıysa, bu da yazılan Database Engine hata günlüğü dosyası.

  • [ @replace = ] 'replace'
    If specified as the string replace, an existing error message is overwritten with new message text and severity level.replace is varchar(7) with a default of NULL.Bu seçenek belirtilmelidir msg_id Zaten Var. Bir ABD değiştirirsenizIngilizce ileti önem düzey, tüm iletilerin aynı olan tüm diğer dillerde değiştirilir msg_id.

Dönüş Kodu Değerleri

0 (başarılı) veya 1 (hata)

Sonuç Kümeleri

None

Remarks

Ingilizce olmayan sürümleri için SQL Server, ABD Iletinin başka bir dil kullanarak eklenebilmesi için önce bir ileti'nin ingilizce sürüm önceden mevcut olmalıdır.Iletinin iki sürümlerinin önem eşleşmesi gerekir.

Parametreleri içeren iletiler yerelleştirme, özgün iletinin parametrelerinde karşılık gelen bir parametre numaralarını kullanın.Ünlem işareti (!), sonra her parametre numarası ekler.

Özgün İleti

Yerelleştirilmiş bir ileti

' özgün iletinin parametre 1: %s,

Parametre 2: % d '

' ileti parametre 1 yerelleştirilmiş: %1!,

Parametre 2: %2!'

Dil sözdizimi farklılıklar nedeniyle özgün iletinin gibi aynı sıradaki yerelleştirilmiş iletideki parametre numaralarını gerçekleşmeyebilir.

İzinler

Üyelik gerektirir sysadmin and serveradmin sunucu rollerini sabit.

Örnekler

C.Özel ileti tanımlama

Aşağıdaki örnek, özel iletiye ekler. 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.Bir iletinin iki dil ekleme

Aşağıdaki örnek, bir iletinin ilk ABD'de eklerIngilizce ve daha sonra aynı iletinin Fransızca ekler..

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

Aşağıdaki örnek, bir iletinin ilk ABD'de eklerIngilizce ve daha sonra parametre sipariş değiştiğinde, yerelleştirilmiş bir ileti ekler.

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.