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

سؤال للخبراء عن ال locking

مغلق
بدأه مصرمج في 7 يونيو 2005 · 4 رد · 573 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

الأخوة الأعزاء

قمت بالتحويل من البرمجة من أوراكل إلى sql server وكان الأمر جيدا ولكن المشكلة التي واجهتها

هي في مسألة حجز الجدول ففي أوراكل اذا قمت بإدخال سجل جديد في جدول معين يستطيع بقية المستخدمين أستعراض هذا الجدول حتى قبل commit or rollback

بينما في ال sql Server لا يستطيع أي مستخدم من رؤية أي حقل في هذا الجدول قبل أن أعمل commit or rollback

وأواجه بسبب هذه مشكلة كبيرة حيث في بعض الأحيان أحتاج أن أعمل commit or rollback بعد ما يزيد عن ربع ساعة

هل هناك إعدادت معينة أم هذه هي طريقة sql server

وشكرا لكم

#2
اقتباس
بينما في ال sql Server لا يستطيع أي مستخدم من رؤية أي حقل في هذا الجدول قبل أن أعمل commit or rollback

ما هو نوع الlock الذي تستخدمه؟

تم تعديل هذه المشاركة بواسطة walcom في 8 يونيو 2005 في 00:21

فكر بطريقة أخرى

#3

ربما لم افهم مشكلتك جيداً هل تقصد انك تقوم بعملية Data Modification بعد فترة طويلة بدون ان تقوم بعمل Roll Back او Commit كل فترة ام انك تريد ان تقوم بإطالة الفترة الزمنية لل Lock المستخدم

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#4

اخي طارق شرح مشكلتي في هذا المثال

مستخدم المشتريات ينفذ هذا الأمر

For i=1 to 150000 do
Insert into item_table 
Values(a,b,c)
Next
Commit;

مستخدم المبيعات يستخدم هذا الأمر

Select price from item_table

المشكلة هي مستخدم المبيعات لايستطيع رؤية أي تفاصيل لملف الأصناف حتى تنتهي عبارة مستخدم المشتريات

بينما في الأوراكل مستخدم المبيعات يستطيع إدخال أو عرض أو تعديل أي سجل في ملف الأصناف إلا الأصناف التي يستخدمها مستخدم المشتريات

أما نوع ال lock فهو implicit lock ( أي عن طريق قاعدة البيانات دون تحكم من المستخدم)

هل إتضحت المشكلة

شكرا لتفاعلك

تم تعديل هذه المشاركة بواسطة walcom في 30 نوفمبر 2005 في 21:21

#5

طالما ان مستخدم المبيعات يستخدم Select Statement فالافضل هو استخدام Update Locks من داخل Explicit Transaction

/* Disable IMPLICIT_TRANSACTIONS */
SET IMPLICIT_TRANSACTIONS Off
/* Identify The Isolation Level With Your Needs*/
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
/* Begin Using Explicit Transaction */
begin transaction SelectTran
/* Use Table Hint UPDLOCK To Allow You To Make Select */
Select price from item_table(UPDLOCK) go

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

هذا الموضوع مغلق.

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