PDA

View Full Version : جلوگیری از خواندن همزمان چند نفر از یک فیلد sql



alirzn
جمعه 20 مهر 1386, 12:07 عصر
با سلام
چطور میشه نگذاریم دو نفر همزمان در یک لحظه به یک فیلد از sql دسترسی داشته باشن؟

ClaimAlireza
جمعه 20 مهر 1386, 14:57 عصر
در مورد Query Notification توی این بخش و توی بخش asp.net سرچ کن.

mhadvi_mahmaood
جمعه 20 مهر 1386, 16:44 عصر
در خواست شما مربوط میشود به isolation level های مختلف. SQL server این موارد رو خوب مدیریت میکنه. بستگی داره به نیازشما.

AminSobati
جمعه 20 مهر 1386, 20:18 عصر
دوست عزیزم،
Lock کردن در حد رکورد امکان پذیره نه فیلد. یعنی اگر یک رکورد، هر کدوم از فیلدهاش در حال ویرایش باشه، کل اون رکورد Lock میشه. به غیر از Isolation Levelها که در پست قبلی اشاره شد، از Table Hint هم میتونین استفاده کنین. اما جزئیات نحوه انجام این کارها برمیگرده به هدف و سناریوی شما

mrrajabi
جمعه 20 مهر 1386, 20:19 عصر
این موضوع مربوط میشه به بحث همزمانی (cucurrency) و مشکلش با Locking حله ,به شرطی کع عمل قفل گذاری باعث بوجود آمدن حلقه نشود که شاید سیستم هنگ کنه.
البته این بحث تئوریش بود و بحث عملی این موضوع رو باید خودتون پیگیری کنید و به جوابتون برسین

alirzn
شنبه 21 مهر 1386, 12:12 عصر
درست متوجه نشدم. میشه دقیق بگید؟

alireza643
شنبه 21 مهر 1386, 12:55 عصر
دقیق اگر بخواهید بدونید منظور آقای mrrajabi این بود که شما میتونید به وسیله ی Lock کردن رکورد از همزمانی در خواندن جلوگیری کنید ولی اگر دوتا tran داشته باشیم که هر کدوم برای ادامه کار نیازمند به تمام شدن کار دیگری باشند در این حالت deadlock اتفاق میوفته. ولی این حالت تو ms sql server پیشبینی شده و خود sql برای رفع این مشکل اقدام میکنه.
در کل شما باید از set tran isolation level استفاده کنید که حالت های مختلفی داره که شما میتونید تو books online مشاهده کنید و حالتی که برای کار شما مناسب هست رو انتخاب کنید.

eyes_shut_number1
شنبه 21 مهر 1386, 20:32 عصر
فکر کنم بهترین حالتش که بازهم فکر کنم تو2005 اضافه شده Snapshot هست
که اینطور که شنیدم روورژنینگ یعنی هر رکوردی که داره خونده میشه اونو لاک میکنه
set transation isolation level snapshot