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

  • ethr95awd

    ethr95awd

    8 Kasım 2006
  • Kap Slap

    Kap Slap

    8 Mart 2010
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006