PDA

View Full Version : تراکنشها



کیوان معینی
پنج شنبه 28 تیر 1386, 15:54 عصر
اگه دقیقا در حین اجرای یک تراکنش توسط SQl Server (توجه نمایید در هنگام اجرای تراکنش ، یعنی بعد از دستور CommitTrans ، زمانیکه یه تراکنش داره اجرا میشه ) ، سیستم از کار بیفته ( فرضا برق بره – Ups هم نداریم) ، چطور RollbackTrans اتفاق میفته ؟!

hdv212
پنج شنبه 28 تیر 1386, 15:59 عصر
تا اونجایی که commit شده که هیچ، ولی اونجایی که commit نشده، rollback میشه.

کیوان معینی
جمعه 29 تیر 1386, 00:06 صبح
با تشکر از توجه شما ، فکر میکنم شما متوجه منظور من نشدید ، اگه قرار به این باشه که یه قسمت از تغییرات اعمال و بقیه اش برگشت بشه ، در این صورت مفهوم تراکنش زیر سوال میره ! نه ؟!

دوست های عزیز ، چرا کسی جواب نمیده ؟!

جناب آقای ثباتی ، شما نظری ندارین ؟

AminSobati
جمعه 29 تیر 1386, 11:14 صبح
کیوان جان تمام عملیات ما، قبل از اینکه روی اطلاعات تاثیر بگذارند، در Log File نوشته میشن. اگر وسط کار سیستم Crash کنه، دفعه بعد که سرویس SQL Server مجددا Start میشه، هر دیتابیس ابتدا وارد مرحله ای میشه به اسم Recovery. در این مرحله Log File بررسی میشه و در صورتی که Transactionی تغییرات اعمال کرده ولی Commit از طرف کاربر صادر نشده، اینجا Rollback میشه. تا زمانی که دیتابیس مرحله Recovery رو پشت سر نگذاره، برای استفاده در اختیار کاربرها قرار نمیگیره

رضا عربلو
جمعه 29 تیر 1386, 23:49 عصر
اگر اشتباه می کنم تصحیح کنید.
هنگامی که شما یک تراکنش را اجرا می کنید، اگر timeoutی که در کانکشن استرینگتان وجود دارد (اگر صریحاً ذکر نکرده باشید مقدار پیش فرض در نظر گرفته می شود) به سر برسد تراکنش در سمت سرور خودبخود rollback می شود.