View Full Version : lock , unlock کردن یک جدول
itman.jam
دوشنبه 13 بهمن 1393, 14:23 عصر
سلام دوستان
میخوام وقتی یک کوئری اجرا شد تیبل قفل بشه و هنگامی که کوئری پایان یافت جدول برای استفاده بقیه آزاد بشه . من دستور زیر را نوشتم ولی ظاهرا جدول کلا قفل میشه وباز نمیشه
برای باز کردن جدول کدی را جا انداختم ؟
begin Transaction
Select * From TableName With(TabLockx)
commit transaction
مهدی نان شکری
دوشنبه 13 بهمن 1393, 14:36 عصر
با سلام
اصولا باید بعد از commit، قفل Release بشود. و مشکلی در کد نیست
itman.jam
دوشنبه 13 بهمن 1393, 16:20 عصر
با سلام
اصولا باید بعد از commit، قفل Release بشود. و مشکلی در کد نیست
من در sql server ایند کد را اجرا میکنم و سپس در یک کوئری دیگه همین کد را مجدد اجرا میکنم ولی دستور دوم اجرا نمیشه و علامت انتظار (دایره چرخان اوم پایین) نمایش داده میشه .
اگر (TabLockx را از دستور حذف کنم دستور دوم هم کار میکنه .
بنظرتون اشکال از کجاست ؟
مهدی نان شکری
دوشنبه 13 بهمن 1393, 16:32 عصر
commit transaction را در کوئری اول اجرا می کنید؟ چون بعد از اجرای commit transaction جدول آزاد می شود
itman.jam
دوشنبه 13 بهمن 1393, 16:34 عصر
خب فکر کنم درست شد ! طاهرا نباید دستور commot را از کوئری حذف کنیم من یکبار بدون commit اجرا کردم و کلا جدول از دسترس خارج شد حتی با اضافه کردم commit و اجرای مجدد کوئری باز هم جدول قفل مونده بود . تنها راه بستن کوئری بود که خود sql پیغام میده جدول قفله و مایل هستید بازش کنید !! .
مهدی نان شکری
دوشنبه 13 بهمن 1393, 16:38 عصر
بلی چون بدون Commit و Rollback جدول قفل می مونه
php_love
سه شنبه 14 بهمن 1393, 07:12 صبح
سلام دوستان
میشه دلیل قفل کردن Table رو بگید . اصولا برایه چی و در چه هنگامی این کار رو باید انجام بشه و چه دلیلی باعث شده تا از این عمل استفاده کنید ؟؟
ممنون میشم توضیح کاملی بدین
مهدی نان شکری
سه شنبه 14 بهمن 1393, 15:02 عصر
با سلام
در شرایط متعددی نیاز به استفاده از Hint های Lock خواهیم بود که معروف ترین آن سناریوی تولید کلید Auto Number به صورت دستی می باشد.
به طور مثال فرض کنید در سیستمی نیاز به تولید کد Unique با شرایط ذیل هستیم CompanyCode + NextNumber
یعنی برای هر کمپانی کد های پشت سر هم تولید شود
اگر در چنین شرایطی شما جدول را برای اخذ آخرین شماره موجود در جدول قفل نکنید احتمال تولید کد های تکراری توسط کاربران دیگر (همزمانی) خواهد بود.
برای بر طرف کردن این مشکل از چنین تکنیک هایی استفاده می شود (البته نه دقیقا این روش).
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.