sp_addmessage (Transact-sql)

Yeni bir kullanıcı tanımlı hata ileti örneği içinde saklayan SQL Server Veritabanı Altyapısı. Kullanarak iletilerinizi sp_addmessage kullanarak görüntülenebilir sys.messages Katalog görünümü.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

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
    İleti kimliğidir. msg_idise intnull varsayılan. msg_idkullanıcı tanımlı hata iletileri 50,001 ile 2.147.483.647 arasında bir tamsayı olabilir. Birlikte msg_idve language; benzersiz olmalıdır bir hata döndürülür için belirtilen dil kimliği varsa.

  • @severity = severity
    Hata önem düzeyidir. severityise smallintnull varsayılan. 1 İle 25 arasında geçerli düzeyler vardır. Severities hakkında daha fazla bilgi için bkz: Veritabanı Altyapısı hata Severities.

  • @msgtext ='msg'
    Hata iletisi metni olur. msgise nvarchar(255)null varsayılan.

  • @lang ='language'
    Bu ileti için bir dildir. languageise sysnamenull varsayılan. Birden çok dil-ebilmek var olmak installed aynı sunucuda, çünkü languageher iletinin yazıldığı dili belirler. Ne zaman languageise atlanırsa varsayılan dili için oturumu dildir.

  • @with_log = { 'TRUE' | 'FALSE' }
    İletisi oluştuğunda Windows uygulama günlüğüne yazılacak olup olduğunu. @ WITH_LOG olan varchar(5) false varsayılan. TRUE, hata her zaman Windows uygulama günlüğüne yazılır. YANLIŞ, hata her zaman Windows uygulama günlüğüne yazılan değil ancak, hatayı nasıl büyüdü bağlı olarak yazılabilir. Yalnızca üyeleri sysadmin sunucu rolü bu seçeneği kullanabilirsiniz.

    [!NOT]

    Windows uygulama günlüğüne bir ileti yazılmışsa, o da yazılan Veritabanı Altyapısıhata günlüğü dosyası.

  • @replace ='replace'
    Dizge olarak belirtilen replace, yeni ileti metni ve önem düzeyi ile varolan hata iletisi yazılır. replaceise varchar(7)null varsayılan. Bu seçenek belirtilmelidir msg_idzaten mevcut. Bir ABD yerine İngilizce ileti önem düzeyi aynı olan tüm diller tüm iletiler için yerine msg_id.

Dönüş Kodu Değerleri

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

Sonuç Kümeleri

Hiçbiri

Açıklamalar

İngilizce olmayan sürümleri için SQL Server, ABD İletiyi başka bir dilde eklenmeden önce bir ileti İngilizce sürümü önceden mevcut olmalıdır. İletiyi iki sürümü şiddeti eşleşmelidir.

Yerelleştirme parametreleri içeren iletiler özgün iletinin parametreleri karşılık parametre numaraları kullanın. Ünlem işareti (!), her parametre numarası sonra yerleştirin.

Özgün ileti

Yerelleştirilmiş ileti

' Özgün ileti param 1: %s

param 2: % d'

' ileti param 1 lokalize: % 1!,

param 2: % 2!'

Dil sözdizimi farklılıkları nedeniyle, özgün iletiyle aynı sırayla yerelleştirilmiş ileti parametresi sayıları gerçekleşmeyebilir.

İzinler

Üyelik sysadmin ve serveradmin sunucu rolleri sabit.

Örnekler

A.Özel ileti tanımlama

Aşağıdaki örnek, bir ö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

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.İki dilde bir ileti ekleme

Aşağıdaki örnek, ilk önce bir ileti ABD'de ekler İngilizce ve Fransızca olarak aynı iletiyi 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

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, ilk önce bir ileti ABD'de ekler İngilizce ve parametre sırasını değiştirilmez lokalize iletiye 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.

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.

Ayrıca bkz.

Başvuru

RAISERROR (Transact-SQL)

oluşturulan (Transact-sql)

sp_dropmessage (Transact-sql)

Sistem saklı yordamları (Transact-sql)