SQL Server 2005 intoduced ใหม่วิธีการย้อนกลับการทำธุรกรรมใน SQL Server 2005
SET XACT_ABORT ON
เมื่อ XACT_ABORT อยู่บน. งบ T - SQL จะย้อนกลับโดยอัตโนมัติเมื่อการทำธุรกรรมเกิดข้อผิดพลาดในงบ.
SET XACT_ABORT ON
การใช้พนักงาน
เริ่มต้นทราน
แทรกค่า EmpInfo(1)
แทรกค่า EmpInfo(1) — คำสั่งนี้จะยกข้อผิดพลาดของคีย์หลัก
แทรกค่า EmpInfo(2)
Tran กระทำ
บรรทัดแรกของคำสั่งจะดำเนินการได้โดยไม่ต้องผิดพลาดใด ๆ. ข้อผิดพลาดคีย์หลักจะเพิ่มในบรรทัดที่สอง. แต่การทำธุรกรรมป้องกันทั้งหมดจะไม่ได้รับความมุ่งมั่นเพราะ XACT_ABORT ในเมื่อ.
คุณควรทราบว่า XACT_ABORT สิ้นสุดชุด * * * * * * * * ปัจจุบัน, ไม่ได้คำสั่งทั้งหมด. batches จะแยกกับคำหลักไปที่. การดำเนินการจะยังคงที่จุดเริ่มต้นของชุดถัดไป.
คุณลักษณะนี้ยังสามารถใน SQL Server 2000, แม้ว่ามันจะทำงานแตกต่างกันเล็กน้อยสำหรับข้อผิดพลาดต่างๆ.
ใน SQL 2000, มีกรณีที่ล้มเหลวในการ XACT_ABORT ย้อนกลับรายการโดยอัตโนมัติ.
เช่น:
ใส่ลงในชื่อคอลัมน์ที่ไม่ถูกต้อง.
ใส่ลงในคีย์หลักที่มี IDENTITY_INSERT OFF.
การดำเนินการเลือกที่ใช้ UDF ที่ไม่มีอยู่จริง.
ประเภทนี้ผิดพลาดมักจะเกิดจากคำสั่งที่เขียนไม่ดี, ดังนั้นพวกเขาจึงไม่ได้เกิดขึ้นในการดำเนินการแบบวันต่อวันของโปรแกรมของคุณจนกว่าจะมีคนเปลี่ยนสคีมา. แต่ฉันบัญชีสำหรับความเป็นไปได้ของพวกเขาเมื่อเขียนสคริปต์การปรับปรุงฐานข้อมูลเมื่อปรับรุ่นใหม่ของโครงการ, เพียงแค่ในการใช้งานกรณีที่ไม่ได้ไปตามแผนที่วางไว้.
มีวิธีการจัดการข้อผิดพลาดเหล่านี้. ของคุณกระทำควรจะอยู่ในชุดการแสดงงบ dml ที่. หลังจากที่แบทช์ (หลังจากคำหลักไปที่) คุณสามารถตรวจสอบ @ @ TRANCOUNT เพื่อดูว่ามันมีค่ามากกว่าศูนย์และดำเนินการตาม. มักจะย้อนกลับการทำธุรกรรม.
การทำธุรกรรม span สามารถกระบวนการ, เพื่อให้คุณสามารถดำเนินการย้อนกลับในชุดต่อมา.