SORU
16 EYLÜL 2008, Salı


Neden Sql Server xact_abort açık olduğunda raıserror sonra yürütme devam ediyor mu?

Ben sadece TSQL bir sürpriz var. Eğer xact_abort açık olsaydı, bir şey arıyor gibi düşündüm

raiserror('Something bad happened', 16, 1);

saklı yordam (veya herhangi bir parti) yürütme keser.

Ama ADO.NET hata mesajı tam tersini kanıtladı. Özel durum iletisi raıserror hata iletisini iki, artı bundan sonra kırıldı sıradaki şeyi aldım.

Bu benim geçici çözüm zaten benim için bir alışkanlık olan), ama gerekli olması gerektiği gibi görünmüyor:

if @somethingBadHappened
    begin;
        raiserror('Something bad happened', 16, 1);
        return;
    end;

Doktorlar demek bu

SET XACT_ABORT ON olduğunda, eğer bir Transact-SQL ifadesi çalışma zamanı hata yaptıysam, tüm işlem sonlandırıldı ve geri alındı.

Bu açık bir hareket kullanarak anlamına mı geliyor?

CEVAP
16 EYLÜL 2008, Salı


Bu Tasarım gereğidirTM, benzer bir soru: SQL Server takımın yanıt Connect üzerinde görebilirsiniz

Görüşleriniz için teşekkür ederim. Tasarım, set XACT_ABORT seçeneği RAISERROR deyimi davranışlarını etkilemez. Görüşlerinizi SQL Server'ın gelecekteki bir sürüm için bu davranışı değiştirmek için dikkate alacağız.

Evet, bu yüksek bir önem derecesi RAISERROR uman bazıları için bir sorun (16) gibi bir bit SQL yürütme hatası gibi - değil.

Çözüm senin yapman gereken şey sadece ve açık bir hareket kullanarak, değiştirmek istediğiniz davranışı üzerinde herhangi bir etkisi yoktur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Official Android Tips

    Official And

    23 EYLÜL 2009
  • Neil Cicierega

    Neil Ciciere

    22 Mart 2006
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008