SQL Server 2005 intoduced עתה את הדרך החזרה העסקאות ב-SQL Server 2005
SET XACT_ABORT על
כאשר XACT_ABORT הוא על. הדוחות T-SQL באופן אוטומטי החזרה את העסקה כאשר השגיאה אירעה הדוחות.
SET XACT_ABORT על
השימוש EMP
בגין טראן
הכנס לתוך EmpInfo ערכים(1)
הכנס לתוך EmpInfo ערכים(1) — הצהרה זו תהיה טעות להעלות את המפתח הראשי
הכנס לתוך EmpInfo ערכים(2)
להתחייב טראן
השורה הראשונה של משפט יהיה לבצע ללא שגיאות. השגיאה המפתח הראשי יעלה בקו השני. אבל העסקה לחסום כולו לא יהיה מחויב משום XACT_ABORT על.
כדאי לציין כי XACT_ABORT ומפסיקה את אצווה * הנוכחי *, לא הפקודה כולה. קבוצות מופרדות עם מילת המפתח GO. ביצוע ימשיכו בתחילת אצווה הבא.
תכונה זו היא גם ב-SQL Server 2000, למרות שהוא מתנהג באופן שונה במקצת עבור שגיאות שונות.
ב-SQL 2000, ישנם מקרים שבהם XACT_ABORT נכשל החזרה את העסקה באופן אוטומטי.
למשל:
הוספת שם לתוך עמודה לא חוקיים.
הוספת לתוך מפתח ראשוני עם IDENTITY_INSERT OFF.
ביצוע SELECT העושה שימוש ב-UDF אפסי.
אלו סוגים של טעויות הן בדרך כלל בשל פקודה חיבר גרוע, כך שהם לא מתרחשים המבצע היום יום של התוכנית שלך, אלא אם מישהו משנה את סכימת. אבל אני בחשבון את האפשרות שלהם בעת עריכת העדכון סקריפטים באתר, כאשר פריסת הגרסה החדשה של פרוייקט, רק בשנת הפריסה מקרה לא הולך כמתוכנן.
ישנן דרכים להתמודד עם השגיאות האלו. להתחייב שלך צריך להיות ב אצווה מבצע הצהרות DML. לאחר אצווה (אחרי מילת המפתח GO) אתה יכול לבדוק את TRANCOUNT @ @ כדי לראות אם זה גדול מאפס ולפעול בהתאם. בדרך כלל החזרה את העסקה.
עסקאות יכולה להקיף אצוות, כך תוכל לבצע החזרה באצווה הבאים.