SQL Serverのトランザクションをロールバック 2005

SQL Serverの 2005 新たにロールバックSQL Serverでのトランザクションを固定する方法をintoduced 2005

XACT_ABORTをONにセット

XACT_ABORTがオンの場合. T - SQLステートメントは、自動的にトランザクションをロールバックエラーが文で発生したれます.

XACT_ABORTをONにセット

EMPを使用して、
トランを始める
EMPINFO値に挿入します。(1)
EMPINFO値に挿入します。(1) — この文は、主キーエラーが発生します
EMPINFO値に挿入します。(2)
COMMIT TRAN

文の最初の行は、エラーなしで実行されます. 主キーのエラーが2行目に発生します. しかし、ブロック全体のトランザクションはコミットされませんので、上のXACT_ABORT.

1 SQL Serverのトランザクションをロールバックするコメント 2005

  • noreply@blogger.com (トッド)

    あなたはXACT_ABORTが現在*バッチ*を終了することに注意してください, 全体ではなく、コマンド. バッチがGOキーワードで区切られています. 実行は、次のバッチの開始時に継続します.

    この機能は、SQL Serverにもあります 2000, それは様々なエラーのため、少々異なって動作がも.

    SQLの 2000, XACT_ABORTが自動的にトランザクションをロールバックに失敗する場合があります.

    インスタンスのための:

    無効な列名への挿入.

    IDENTITY_INSERT OFFと主キーへの挿入.

    存在しないUDFを使用するSELECTの実行.

    この種のエラーは通常不完全に書かれたコマンドが原因です。, 誰かがスキーマを変更しない限り、そう、彼らはあなたのプログラムの日々の操作では発生しませんので、. オーサリングのデータベース更新スクリプトは、プロジェクトの新しいバージョンをデプロイするときに時が、私は彼らの可能性を考慮, 念の展開で計画どおり行かない.

    これらのエラーを処理する方法があります。. あなたのCOMMITは、DML文を実行するバッチにする必要があります. バッチの後に (GOキーワードの後に) あなたはそれがゼロより大きいよいかどうかを確認し、それに従って行動すること@ @ TRANCOUNTを確認することができます. 通常ROLLBACKトランザクションを.

    トランザクションは、バッチにまたがることができます, ので、後続のバッチでロールバックを実行することができます.

返信コメントを残す

使用することができます これらのHTMLタグ

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>