المشاركات : 1,262
المواضيع 16
الإنتساب : May 2016
السمعة :
291
الشكر: 801
تم شكره 2223 مرات في 1168 مشاركات
20-04-23, 04:46 AM
(آخر تعديل لهذه المشاركة : 20-04-23, 04:49 AM {2} بواسطة Taha Okla.)
وعليكم السلام ورحمة الله وبركاته
عن تجربة بالتعامل مع قواعد بيانات آكسس
عندما ينقطع التيار والقاعدة مفتوحة بكائن اتصال : احتمال دمار قاعدة البيانات أكثر من 60%
استرجعت الكثير ممن تم دمارها بسبب التيار أو سبب ما عرضي ...
وليس كل قاعدة بيانات يتم دمارها يمكن استرجاعها .. أو استرجاع جزء من بياناتها..
ممرت بحالات لم أستطع استرجاع أي شيء من البيانات..
بينما لو انقطع التيار والاتصال مغلق لن يحدث أي شيء للبيانات..
هذا فيما يخص أمان قاعدة البيانات من التلف والدمار..
عندما تعمل على بيانات الان أخذتها من قاعدة البيانات يختلف عن البيانات التي تم اخذها قبل فترة ..
فلو كان هناك شخصين أو أكثر يعملون على نفس القاعدة
فأي تعديل من قبل مستخدم معين سيعطي بيانات مضللة بالنسبة للمستخدمين الاخرين
الذين سيستخدمون نفس البيانات فيما لو تم اتصالهم قبله وتنفيذهم بعده,..
شيء آخر : عندما تعمل مع قواعد بيانات لبرامج محاسبية ..
سيكون عليك انشاء كائن (جديد) مع كل عملية، فالعملية الواحدة قد تطلب بيانات للمستخدم وبيانات للتنفيذ على جدول ثم بيانات من جدول آخر لتنفذ في جدول مختلف
فقد تنفذ عدة عمليات في عدة جداول بنفس الوقت، فلو كنت تعتمد على فتح اتصال وحيد وكائنات تعامل محددة مع الجداول ستقع بخطأ الخلط بين البيانات ولن تعرف أين الخطأ إلا بعد حين من الدهر .. تكون وقتها مللت من أم البرمجة وأم المحاسبة..
قال صلى الله عليه وسلم:
«كلمتان خفيفتان على اللسان
ثقيلتان في الميزان،حبيبتان إلى الرحمن:
سبحان الله وبحمده، سبحان الله العظيم».
المشاركات : 101
المواضيع 25
الإنتساب : Apr 2020
السمعة :
4
الشكر: 75
تم شكره 92 مرات في 59 مشاركات
شكرا على المرور والمعلومات
بالنسبة لقاعدة بيانات اكسس هي اسواء ما يوجد ولم استخدمها من قبل وباقي قواعد البيانات لا مشكلة لديها في انقطاع التيار والاتصال مفتوح
اما بالنسبة لتحديث البيانات فكائن الاتصال لا علاقة له بتحديث البيانات وانما كائنات القراءة والكتابة مثل محول البيانات
ولامشكلة سوف تنشئ كائن جديد من قارئ او محول البيانات في كل عملية
المشاركات : 813
المواضيع 24
الإنتساب : Oct 2012
السمعة :
230
الشكر: 1133
تم شكره 2180 مرات في 815 مشاركات
أسلوب ومتطلبات البرنامج تحدد اسلوبك في الإتصال بقاعدة البيانات
( لا يضر الشاة سلخها بعد ذبحها )
ادري المثل ماله علاقة ، بس هذا من عندي هدية
بعض التطبيقات ، لا يضرها لو تم تنفيذ مليون عملية وفي كل مرة يتم إنشاء كائن إتصال جديد، ويتم تدميره في نفسة المرة.
عادي جداً...
بعض التطبيقات معمولة بأسلوب ( يجب أن يكون كائن الإتصال واحد، ويتم إستخدامة في جميع أنحاء البرنامج - "حصراً" ، لا تمر شاردة وواردة إلى عبر هذا الكائن)، يتم إنشاء مرة واحدة ولا يتم تدميره إلا بالخروج من البرنامج.
لا أتحدث هنا عن فتح وإغلاق الإتصال، فأغلب العمليات البسيطة تفتح وتغلق الإتصال، الحديث هنا عن وجود كائن الإتصال نفسة.
التقنيات الحالية في الــ NET. و الــ Sql Server ،،،،
مسمى ("مجمع الإتصالات") - ("connection pooling")
المسؤال في الـ NET. عن الإتصالات ( ADO.NET ) مهما قمت بإنشاء عدد لا نهائي من الإتصالات، بواسطة كان إتصال، في حلقة تكرار مثلاً ، تنشئ كائن إتصال ، تتصل، تنتهي، تغلق، تدمر الكائن، لو عملتها مليون مرة ، الــ( ADO.NET ) يعيد استخدام الاتصالات سيعطيك نفس الـ Connection الموجود في ("مجمع الإتصالات")، ولا يسبب أي جهد على موارد النظام
في الحالات العادية ، ينصح بإنشاء كائن إتصال جديد وتدميرة بعد الإنتهاء مباشرتاً، بذلك أنت تخبر الــ( ADO.NET ) أنك لست في حاجة الإتصال، ليتم إرجاعهة إلى ("مجمع الإتصالات").
في حالات تنفيذ عمليات متعددة وكبيرة من الأفضل إستخدام كائن واحد والإتصال مفتوح لجميع العمليات، وتدميره بعد الإنتهاء من كافة العمليات.
المشاركات : 101
المواضيع 25
الإنتساب : Apr 2020
السمعة :
4
الشكر: 75
تم شكره 92 مرات في 59 مشاركات
شكرا اخ عبد الدوسري على المعلومات
يبقى سؤال واحد بالخصوص
عند استخدام الـ Transaction ومطلوب تحسس اي عملية اعتقد بحال انشاء اتصال جديد لا يمكن للاتصال الثاني تحسس اي عملية قام بها الاتصال الاول
الا بحال كانت العملية الثانية تستخدم نفس الاتصال للعملية الاولى
المشاركات : 101
المواضيع 25
الإنتساب : Apr 2020
السمعة :
4
الشكر: 75
تم شكره 92 مرات في 59 مشاركات
بالضبط هو ما قصدته وجزاك الله كل خير