الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل يمكن إجبار قاعدة بيانات SQL server ان لا تنفذ اكثر من جملة استعلام في نفس الوقت

بدأه m00j في 13 يونيو 2012 · 5 رد · 789 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم

بداية انا أكاد لا اعرف شيء عن asp.net ولدي سؤال لذوي الخبرة وهو

لدي فكرة لعمل تطبيق وب ولكن في مرحلة من المراحل يتطلب ان لا يسمح بأكثر من مستخدم للتعديل على قاعدة البيانات ( وهذا الوقت يقدر بقدر ما يلزم لتنفيذ جملة استعلام insert SQL command ) هل هذا ممكن ؟

المثال

في البداية يستدعي المستخدم الجدول table1 ويقوم بالنقر على الصفوف التي يحتاج لنقلها من خلال اختيار checkbox لذلك الصف ثم ينقر على مفتاح لحفظ التغييرات ويأتي بعده تنفيذ جملة الاستعلام التالية

Insert in to table2 selecte * from table1 where colue3 = true

علما بان colue3 هو حقل من checkbox

ثم اعمل حلقة دوران على كافة السجلات بهدف ازالة الاختيار من حقل checkbox

في المثال السابقة خطر في بالي ان كان هناك مستخدمان نقرا على نفس الزر في نفس اللحضة ماذا سيحدث ؟ مع العلم ان لكل واحد منهما اختيار مختلفة

آمل ان اكون قدمت سؤالي بشكل واضح وفي انتظار الرد

تم تعديل هذه المشاركة بواسطة m00j في 13 يونيو 2012 في 19:11

#2

علي حسب ما كتبت في جملة الاستعلام لا ياثر معك تكررا الادخال ويمكن تجاهل التكرار اثناء الادخال

#3

اخي كريم شكرًا على الرد و آمل ذلك ولو انه منطقيا ستكون هناك مشكلة

#4

السلام عليكم

على فرض أن مستخدمين بنفس الوقت أحضرا نفس مجموعة السجلات من نفس الجدول من نفس القاعدة

طبعا العمل يتم محليا

ولنفرض أن الأول قام بحذفها

والثاني قام بالتعديل فقط

ثم قاما معا بتنفيذ أمر التحديث

فهناك أحد احتمالات إما أن يصل الأمر من الأول قبل الثاني أو العكس

حتى لو وصلا معا فلحظة الدخول في الثريد لتنفيذ التعديل على القاعدة يتم قفل السجلات التي سيجري عليها التعديل وتبقى الطلبات الأخرى في الانتظار ريثما يتم فك القفل عن السجلات

ليبدأ التالي وهكذا

الآن لو سبق الأول فستحذف السجلات ثم يأتي الأمر الثاني ليعدل على سجلات محذوفة فتظهر له رسالة خطأ بأن السجلات قد حذفت

أما إذا سبق الثاني فسيتم التعديل ثم يتم تنفيذ الأمر الأول ويتم حذفها

هذا ما أعلمه

طبعا الأمر قد يختلف باختلاف آلية القفل إن كانت على مستوى الجدول أو السجلات أو القاعدة أو ربما الحقول

وربما هذا جواب سؤالك هي أن تكون صلاحيات للمستخدم بتحديد مستوى القفل.

كمثال :

عندما تتم عملية أخذ نسخة احتياطية أظن أن القفل يكون على المستوى القاعدة ككل ولهذا يتم منع أي تعديلات ريثما تتم عملية النسخ.

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#5

ابو احمد شكرا لك ولكن كيف يتم القفل كما ذكرت هنا

أبو أحمد المبرمج كتب:

طبعا الأمر قد يختلف باختلاف آلية القفل إن كانت على مستوى الجدول أو السجلات أو القاعدة أو ربما الحقول

هل يمكن تنفيذ هذا بالكود ويا ليت يكون vb :) وماذا تسمى هذه العملية في لغة البرمجة لأبحث عن حلول في الانترنت

انتظر ردك يرحمك الله

تم تعديل هذه المشاركة بواسطة m00j في 21 يونيو 2012 في 01:55

#6

عندي فكرة استخدم الامر :

ALTER DATABASE AdventureWorks2012
SET SINGLE_USER

التفاصيل بالرابط http://msdn.microsoft.com/en-us/library/bb522682.aspx

كذا حتخلي مستخدم واحد فقط يعمل كونكت على قاعدة البيانات ...وعليك الباقي

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…