e sp_addmessage (Transact-SQL)
Yeni bir kullanıcı tanımlı hata ileti örnek içinde saklar SQL Server Veritabanı Altyapısı.Kullanılarak saklanan iletiler e sp_addmessage kullanarak görüntülenebilir sys.messages Katalog görünümü.
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_idİş int Varsayılan değer null.msg_idkullanıcı tanımlı hata iletileri 50,001 ile 2.147.483.647 arasında bir tamsayı olabilir.Birleşimi, msg_id ve language ; benzersiz olmalıdır için belirtilen dil kimliği zaten varsa bir hata döndürülür.[ @ önem = ]severity
Hata önem düzey olur.severityİş smallint Varsayılan değer null.1 İle 25 arasında geçerli düzeyleridir'ı tıklatın.Severities hakkında daha fazla bilgi için bkz: Veritabanı Altyapısı hata Severities.[ @ msgtext = ] 'msg'
Hata iletisi metni olur.msgİş nvarchar(255) Varsayılan değer null.[ @lang = ] 'language'
Bu ileti dildir.languageİş sysname Varsayılan değer null.Birden çok dilde aynı sunucuda yüklü olması nedeniyle language her ileti yazılır dilini belirler.Zaman language olan atlanırsa oturum varsayılan dil dildir.[ @with_log = ] { 'TRUE' | 'FALSE' }
İletisi oluştuğunda Windows Uygulama günlüğüne mi olduğu.@ with_log olan varchar(5) Varsayılan değer false.true ise, hata her zaman Windows Uygulama günlüğüne yazılır.Yanlışsa, hata her zaman Windows Uygulama günlüğüne yazılır değil ancak, hatayı nasıl düzeltileceğini 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, onu da yazılan Veritabanı Altyapısı hata günlüğü dosyasına.
[ @ Değiştir = ] 'replace'
dizeolarak belirlediyseniz,replace, yeni ileti metni ve önem düzeyile varolan bir hata iletisi yazılır. replaceİş varchar(7) Varsayılan değer null.Bu seçenek belirtilmelidir msg_id zaten mevcut.Bir ABD yerineİngilizce ileti önem düzey yerine tüm iletilerin aynı olan tüm diğer dillerde de 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 dil kullanarak eklenmeden önce bir ileti'nin İngilizce sürüm önceden mevcut olmalıdır.İletiyi iki sürümlerinin önem eşleşmesi gerekir.
Parametreleri içeren iletiler yerelleştirme, özgün iletinin parametreleri karşılık parametre numaraları kullanın.Her parametre sayıdan sonra bir ünlem işareti (!) yerleştirin.
Özgün ileti |
Yerelleştirilmiş ileti |
---|---|
' özgün ileti param 1: % s, param 2: % d' |
' ileti param 1 yerelleştirilmiş: %1!, param 2: %2!' |
Dil sözdizimi farklılıkları nedeniyle aynı sırayla olarak özgün iletinin yerelleştirilmiş ileti parametresi sayıları gerçekleşmeyebilir.
İzinler
Üyelik gerektiren sysadmin ve serveradmin'e üye sunucu rolleri sabit.
Örnekler
A.Özel bir ileti tanımlama
Aşağıdaki örnek, özel bir ileti 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.İki dilde bir ileti ekleme
Aşağıdaki örnek, ilk önce bir ileti ABD'de eklerİngilizce ve Fransızca 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
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ştirildiğinde yerelleştirilmiş 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.