PDA

View Full Version : استفاده ار دستور BeginTrans و CommitTrans در ADOConnection?



SYNDROME
یک شنبه 01 آذر 1388, 07:23 صبح
با سلام
قبل از ذخیره اطلاعات دستور BeginTrans و بعد از ذخیره کامل اطلاعات عمل CommitTrans و اگر در زمان ذخیره اشکالی پیش بیاید RollBack می کنیم.
سوال:اگر 10 کاربر به صورت هم زمان در حال ذخیره اطلاعات به صورت مداوم باشند و به دلیل وجود Trigger و . .. هر حمل ذخیره 5 ثانیه طول بکشد با ذخیره اطلاعات اولین کاربر کاربران دیگر تا 5 ثانیه نمی تواند چنین عملی را انجام دهند و این خود باعث ناکارمدی سیستم می شود.
بهترین راه حل برای خروج از چنین وضعیتی چیست؟؟
منتظر راهنمایی شما هستم
با تشکر

حسین شهریاری
یک شنبه 01 آذر 1388, 09:43 صبح
سلام
دوست گرامی اکثر مسائل مربوط به تداخل را خود سیستم عامل ویندوز و SQL حل میکنند و البته مقداری از اونا را هم خودمون با سبک کدنویسی باید حل کنیم.این که فرمودید وجود تریگر مقداری از زمان سرور را میگیره را کاملا قبول دارم ولی استفاده از اون اونقدر مزیت داره که این عیب را میشه ازش چشم پوشی کرد.البته زمان فراخوانی و اجرای یک تریگر خیلی کمتر از حد محاسبه است.در ضمن امروزه با افزایش منابع(از دید سخت افزاری مثل افزایش رم)بسیاری از این معایب اصلا به چشم نمیاد و مشکلی که شما فرمودین شاید درصد رخدادش خیلی کم باشه.

موفق باشید

حسین شهریاری
یک شنبه 01 آذر 1388, 11:54 صبح
ببخشید من فراموش کردم!!:قهقهه:

طریقه کار بدین شکل هستش:

AdoConnection1.BeginTrans

Command1
Command2
.............
............
Commandn

AdoConnection1.CommitTrans

دستوراتتونا بجای Commandها قرار بدین اگر خواستید در صورت بروز مشکل کلیه تغییرات به جای اولیه باز گردند از :AdoConnection1.RollBackTrans استفاده کنین.

امیدوارم تونسته باشم کمک کنم

موفق باشید
---------------------------------------------------------------------------
خدایا چنان کن سر انجام کار تو خوشنود باشی و ما رستگار

SYNDROME
یک شنبه 01 آذر 1388, 16:04 عصر
با تشکر
دوست عزیز کلیه این نکات را می دانم و در این زمینه مشکلی ندارم.
من به دنبال یک کاره کار مناسب هستم تا از طریق آن تا جایی که امکان دارد سرعت بالا برده شود.
منتظر راهنمایی سایر دوستان نیز هستم

DataMaster
دوشنبه 02 آذر 1388, 00:35 صبح
اگر هر بار زکان اجرا 5 ثانیه طول میکشه ، خوب این که یه زمان اجباری هست و حتما باید بقیه پروسس ها منتظر بمانند که همزمانی و کنترل منابع توسط ویندوز و اسکیوال انجام میشه
در ضمن Transaction شما معلوم نیست چه منابعی رو قفل میکنه که این خودش خیلی مهمه