Alex Kuznetsov, Savunma Veritabanı Programlama (Bölüm 8) kitabında T-SQL TRY ... CATCH, T-SQL işlemleri ve SET XACT_ABORT ayarlarını kapsayan ve istemci tarafı hata işleme özelliğini içeren harika bir bölüm içeriyor. Hangi seçeneklerden hangisini gerçekleştirmeniz gerektiğine en uygun olana karar vermede size çok yardımcı olacaktır.
Bu kullanılabilir ücretsiz olarak bu sitede . Hiçbir şekilde şirkete bağlı değilim, ancak bu kitabın basılı kopyasına sahibim.
Bu konuda Alex tarafından çok iyi açıklanmış çok az detay var.
Nick'in isteği üzerine ... (ancak bunların hepsi bölümde değil)
Ölçekleme açısından, hangi faaliyetlerin db kodunda olması ve hangisinin uygulamada olması gerektiği konusunda acımasızca dürüst olmanız gerekir. Hiç hızlı yürütme kodu yöntem başına tek bir endişe için tasarım geri gelme eğilimi fark ettiniz mi?
İletişim kurmanın en kolay yolu özel hata kodlarıdır (> 50.000). Aynı zamanda oldukça hızlı. Bu, db kodunu ve uygulama kodunu senkronize tutmanız gerektiği anlamına gelir. Özel bir hata koduyla, hata mesajı dizesine yararlı bilgiler de döndürebilirsiniz. Kesinlikle bu durum için bir hata kodunuz olduğundan, uygulama koduna hatanın veri biçimine göre uyarlanmış bir ayrıştırıcı yazabilirsiniz.
Ayrıca, hangi hata durumlarının veritabanında yeniden deneme mantığına ihtiyacı vardır? X saniye sonra tekrar denemek isterseniz, uygulama kodunda bunu işlemek daha iyi olur, böylece işlem o kadar da engellemez. Bir DML işlemini yalnızca hemen yeniden gönderiyorsanız, SP'de tekrar etmek daha verimli olabilir. Yine de, yeniden denemeyi gerçekleştirmek için kodu çoğaltmanız veya bir SP katmanı eklemeniz gerekeceğini unutmayın.
Gerçekten, bu şu anda SQL Server'da şu anda TRY ... CATCH mantığıyla en büyük acı. Bu yapılabilir, ama biraz bir yulaf. SQL Server 2012'de bu duruma gelen bazı geliştirmelere, özellikle de sistem istisnalarını yeniden atmaya bakın (orijinal hata numarasını koruyarak). Ayrıca, özellikle günlük kaydı amacıyla hata iletileri oluşturmada bazı esneklik kazandıran FORMATMESSAGE vardır .