SQL Server’da Raiserror Kullanımı
Herkese merhaba,
Bu yazıda size SQL Server’da Raiserror kullanımından bahsedeceğim.
SQL Server’da Raiserror hata fırlatmak için kullanılan bir yapıdır. SQL Server’ın hata fırlatmasını beklemeden kendimiz sorgunun hata fırlatmasını istediğimiz zamanlarda kullanabiliriz. Kısaca Try-Catch ile yakalanamayan hataları kullanıcıya bildirebilmek için Try-Catch yapısı içinde Raiserror yapısını kullanabiliriz. Yazdığımız Trigger ya da Stored Prosedürler için bu yapıyı kullanabilmemiz mümkündür. Raiseerror ile kullanıcıya istemiş olduğumuz mesajı da verdirmek de mümkündür. Örnek kullanımı aşağıda görmektesiniz.
BEGIN TRY SELECT Islem = 255/0 END TRY BEGIN CATCH RAISERROR('Böyle bölme işlemi olmaz olsun...',16,1) END CATCH
Sayı/0 işlemi yapıyoruz fakat istediğimiz uyarıyı verdirdik. SQL Server’dan gelmesi gereken hata gelmemiş oldu.
Bu hata mesajlarını böyle kullanabileceğimiz gibi sp_addmessage prosedürünü kullanarak sysmessages tablosuna ekleterek de kullanabiliriz.
EXEC sp_addmessage 50001, 16, N’Mesaj bilginizi buraya gireceksiniz…’;
Kullanıcı tarafından eklenen hata mesajlarının 50.000’den büyük olması istenir. Bu yüzden tabloya ekleme yaparken hata numarasının 50 binden büyük olması gereklidir.
16 olarak belirtilen kısım ise hata seviye kısmıdır. Bu kısım ile ilgili bilgiyi aşağıda görmektesiniz.
- 01-10 Bilgi mesajıdır, gerçek olmayan hataları gösterebilir. Bağlantı kesilmez.
- 11-16 Kullanıcı kaynaklı hatalardır. Girilen bilgilerin kontrol edilip tekrar onaylanması gerekir.
- 17 Yetersiz Kaynak Hatasıdır. Kullanıcı tarafından veritabanında düzeltilebilir. Bağlantı kesilmez.
- 18 SQL Server’la ilgili iç yazılımsal bir hatadır. Ölümcül olmayan hatadır, bağlantı kesilmez.
- 19 SQL Server sınırının aşıldığını gösterir ve mevcut olan işlemi sonlandırabilir.
- 20 Bir hata ile karşılaşıldığını ve güncel yapılan işlemi etkilediğini belirtir.
- 21 SQL Server’da tüm süreçleri etkileyen bir hata ile karşılaşıldığını gösterir, veritabanının zarar görmesi olası değildir.
- 22 Bir tablo ya da dizin zarar görmüş anlamına gelir. Sorunun boyutunu belirlemek için SQL Server’ı yeniden başlatılmalıdır. Sorun önbelleği ve disk üzerinde değil ise, yeniden başlatma sorunu giderir. Aksi takdirde, hasar ve gerekli eylem boyutunu belirlemek için DBCC (Database Console Commans-Veritabanı Konsol Komutu) kullanılmalıdır.
- 23 Donanım veya yazılım sorunu nedeniyle oluşabilir. Hasarın boyutunu belirlemek için DBCC CHECKDB (‘database adı’) (Bu komut Veritabanının yapısal durumunu kontrol etmek amacıyla kullanılır) çalıştırmak gerekir. Çalışmaya devam etmek için SQL Server yeniden başlatılmalıdır. Bazı durumlarda, veritabanını geri yüklemek gerekebilir.
- 24 Donanımsal bir hata olduğunu gösterir. Sistem yöneticisi veritabanını yeniden yüklemek zorunda kalabilir.
- 25 Bazı tip sistem hatalarını gösterir.
Raiserror ile ilgili en temel olarak bilinmesi gereken şeyler bunlardır.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.