PDA

View Full Version : roll back در sql server چه نقشی دارند ؟



maryamat
پنج شنبه 28 شهریور 1392, 12:02 عصر
roll back در sql server چه نقشی دارند ؟و چگونه با آنها میتوان در یک سیستم دانشگاهی برای انتخاب واحد دانشجویان با معدل های مختلف استفاده کرد ؟

محمد سلیم آبادی
جمعه 29 شهریور 1392, 16:29 عصر
roll back مربوط میشه به بحث Transaction ها.
وقتی مجموعه ای از دستورات دستکاری داده ها به عنوان اتومیک در نظر گرفته میشن با بروز یک خطا در یکی از دستورات تمام دستورات با هم لغو میشن و database به حالت قبل از اجرای تراکنش برمیگرده.

مساله ای که مطرح کردین مربوط میشه به بحث جامعیت داده ها. مثلا دانشجویی که معدل ترم قبلش بالای 17 بود میتونه بیش از 20 واحد برای ترم جاری اخذ کنه. این کار رو شما میتونید با trigger مدیریت کنید. به این شکل که اجازه ندین که افرادی با معدل کمتر از 17 بطور مثال بیش از 20 واحد اخذ کنند.

عموما بررسی های این چنینی را در transaction ها انجام نمیدن چون طول زمان اجرای تراکنش افزایش پیدا میکنه و منجر به مشکلاتی چون deadlock میشه.

مهدی هادیان2
پنج شنبه 04 مهر 1392, 16:15 عصر
بسم الله الرحمن الرحیم

مثلا دانشجویی که معدل ترم قبلش بالای 17 بود میتونه بیش از 20 واحد برای ترم جاری اخذ کنه. این کار رو شما میتونید با trigger مدیریت کنید. به این شکل که اجازه ندین که افرادی با معدل کمتر از 17 بطور مثال بیش از 20 واحد اخذ کنند.

عموما بررسی های این چنینی را در transaction ها انجام نمیدن چون طول زمان اجرای تراکنش افزایش پیدا میکنه و منجر به مشکلاتی چون deadlock میشه.
با سلام
لطفا راه حل اصولی این مورد را بفرمائید.
با سپاس فراوان

mahan.2002
پنج شنبه 04 مهر 1392, 22:03 عصر
با سلام
TRANSACTION ها بیشتر در مواقعی استفاده میشوند که مامیخواهیم مجموعه ای از دستورات را اجرا کنیم...با این شرط که یا همه اجرا شود یا هیچ کدام اجرا نشود!
به عنوان مثال ما ترنزکشنی می نویسیم که میخواهیم 50 هزار تومن از حساب 1 برداشته و به حساب 2 برید... این شرایط را در نظر بگیرد .. حال در عمل اول سیستم 50 هزار تومن از حساب 1 کم کرده است .. وزمان که میخواد این مبلغ رو به حساب 2 اضافه کند ارتبط سیستم قطع میشود یا قطعی برق و یا هر مشکلی .. مثل عدم صحیح عمل کرد سیستم پیش میادد.. حال سوال اینجاست که چه باید کرد؟!
50 هزار تومن از حساب 1 کم شده است ولی در حساب دوم هم چیزی اضافه نشوده است !!
برای حل این مشکل از این روش استفاده میکنند .. یعنی یک سری دستورات با استفاده از رول بک اجرا میکنند و در صورتی که حتی یک دستور اجرا نشود کل دستورات کنسل میشود .. و انگار هیچ اتفاقی در سیستم انجام نگرفته است ... در واقع یک نوع به عقب برگشت محسوب میشود همان طور که از اسمش مشخص است ..