MSSQL: ماذا يحدث عندما يحدث خطأ أثناء تنفيذ الزناد؟
-
22-08-2019 - |
سؤال
فيما يتعلق بالتحديث وإدراج مشغلات خادم MS SQL ، هل هناك طريقة لجعلها ذرية؟ بمعنى آخر ، في حالة حدوث خطأ أثناء الزناد ، هل من الممكن تراجع الإدراج أو التحديث الأصلي تلقائيًا؟
المحلول
بعد أن تكون المشغلات تلقائيًا جزءًا من عبارة DML Asert/Update/Delete على جدول.
يمكنك ببساطة إصدار تراجع تران في الزناد لتراجع كل العمل في الزناد وبيان I/U/D الأصلي. يتم التراجع عن tran الخارجي أيضًا إذا كان هناك واحد.
مهم
التراجع في الزناد لـ SQL 2000 ويؤدي في وقت سابق إلى إحباط الدفعة. لن يتم تشغيل رمز بعد الإساءة I/U/D. انظر مقال Erland الرائع و اخر
بالنسبة لـ SQL 2005 مع Try/Catch ، سيذهب التنفيذ إلى كتلة الصيد وسيخرج دفعة (AKA AKA STORED PROC وما إلى ذلك) بشكل طبيعي.
نرى تراجع وترتبط في الإجراءات المخزنة والمشغلات. الزناد ومحاولة/الصيد هو هنا
نصائح أخرى
هناك مقال جيد في MSDN يتحدث عن المشغلات والمعاملات ، الموجودة هنا:
http://msdn.microsoft.com/en-us/magazine/cc164032.aspx
في الأساس ، تريد استخدام المعاملات لجعل العملية ذرية.