• Narrow screen resolution
  • Wide screen resolution
  • Increase font size
  • Decrease font size
  • Default font size
  • default color
  • red color
JA slide show
Anasayfa
Mar 18 2008
SQL Server 2005 de Hata Kontrolü PDF Yazdır E-posta
Yazar Tuba ÇEBİ   
Salı, 18 Mart 2008

SQL Server’in eski sürümlerinde herhangi bir aşamada hata olup olmadığını anlayabilmemiz için @@Error ün değerini basamak basamak kontrol etmek gerekmektedir...

SQL Server 2005 de ise, TRY-CATCH yapısı kullanılmaktadır. Bu yapı ile daha kolay hata yakalanmasına imkan vererek yazılım geliştiricilerin daha verimli çalışmasına imkan sağlamaktadır.

Yapısı Try ve Catch bloklarından oluşmaktadır. Eğer Begin Try bloğunda bir hata yakaladıysa doğrudan Begin Catch bloğuna yönlendirilir. TRY bloğu içerisinde SQL’in eski sürümlerinde olduğu gibi her adımda hata olup olmadığının kontrol edilmesi yerine CATCH bloğu içerisinde çeşitli önlemler alarak hatayı yakalamak mümkündür…

 

TRY-CATCH YAPISI:

 

BEGIN TRY

{ t-sql blogu }

END TRY

BEGIN CATCH

{ t-sql blogu }

END CATCH;

 

Örneğin;

 

    BEGIN TRY

        PRINT ‘Start try

        RAISERROR (Some Error!, 11, 1)

        PRINTEnd try

    END TRY

    BEGIN CATCH

        PRINT ’Start Catch

        PRINT CAST(ERROR_NUMBER() AS VARCHAR(10)) + ‘numaralý hata’

    END CATCH

    PRINTEnd

 

Bu örnekteki RAISERROR fonksiyonu bir hata meydana geldiği zaman o hatayı tanımlamak için kullanılır.

Sys.messages sisteme kayıtlı, hazır olarak kullanılan toplam 70.000 kadar hata mesajı barındırır. Bu mesajlar, sistemde hazır olan fonksiyonlar ve stored procedureler tarafından kullanılır. RAISERROR (’Some Error!’, 11, 1) satırındaki 11 nolu error’un anlamı: kullanıcının düzeltebileceği türden bir hatadır. ßurada Try ßloğunda 11 nolu hatayı yakalıyor ve Catch bloğuna yönlendiriyor ve oluşan hatanın numarası ERROR_NUMBER() fonksiyonu aracılığı ile okuyoruz.

 

Bu tarzdaki birkaç fonsiyonun döndürdüğü değerleri sırayla öğrenelim:

 

ERROR_MESSAGE() : Hata mesajı metni.

ERROR_SEVERITY() : Hatanın dışa dönük kritiklik durumu.

ERROR_STATE() : Hatanın sisteme dönük kritiklik seviyesi.

ERROR_PROCEDURE() : Hataya neden olan procedure.

ERROR_LINE() : Hataya neden olan satır.

ERROR_NUMBER() Hangi hata RAISE edildi ad-hoc veya sys.message tablosundaki hata kodu.

 

Statement Nesting bir yapıya uygun olarak TRY-CATCH blokları iç içe de kullanılabilirler. Sonuc itibariyle daha belirli ve alt bölümlerden hatalara karşı etkin zırhlı bir yapı kullanılabilir :)

So,see you...

 

Görüntüleme sayısı: 162

Yorumlar (1)
RSS yorumları
1. 19-03-2008 11:53
 
saol
teşekkürler canım böyle konularını eksik etme bizlerden şu SQL i bide bana öğretseydiniz ya hıh :x
Misafir
 
Bu mail adresi spam botlara karşı korumalıdır, görebilmek için Javascript açık olmalıdır

Yorum yaz
  • Lütfen yorumunuzun yazının konusu ile alakalı olmasına dikkat edin.
  • Kişisel hakaret içeren yorumlar silinecektir.
  • Reklam amaçlı yorumlar silinecektir.
  • 'Gönder' düğmesine basmadan önce yeni bir güvenlik kodu üretmek için tarayıcınızın *Yenile* düğmesine basın.
  • Yukarıdaki durum yanlış güvenlik kodu girildiği durumlarda geçerlidir.
İsim:
Web sayfası:
Başlık:
BBCode:Web AddressEmail AddressBold TextItalic TextUnderlined TextQuoteCodeOpen ListList ItemClose List
Yorum:



Güvenlik kodu:* Code
Ek yorumlar konusunda bana e-posta aracılığı ile ulaşılmasını istiyorum.

Yaptığınız yorumlar için teşekkür ederim.