السلام عليكم ورحمة الله وبركاته
لو سمحتم كنت عاوزه اعرف ازاى اعمل Replica واتعامل معاها بكود C#
انا بعمل winform app ومحتاجاها ضروري
برجاء المساعده
كل عام وانتم بخير
هناك عدة حلول سأسردها لكِ :
1 ) استخدام ال Replication في الداتابيس نفسها: و معظم قواعد البيانات للشركات الكبيرة لديها هذه الميزة و لا داعي لكتابة أي كود و إنما يتم فقط تجهيز الاعدادات على السيرفرات والأخذ بعين الاعتبار بعض الأمور البسيطة أثناء عمل البرنامج الذي سيتعامل مع الداتابيس.
2 ) استخدام ال Triggers في الداتابيس: ال Trigger هو كود يتم تنفيذه عند حدوث إدخال/تعديل/حذف بيانات من الجدول ( يستخدم أيضاً في إنشاء الجداول و حذفها ... الخ ) , و في هه الحالة عليكي برمجة ال Triggers لكل حالة إدخال/تعديل/حذف على كل سيرفر بحيث يقوم بنفس العملية على السيرفر الآخر و من الواضح أنها تحتاج إلى جهد كبير.
3 ) يمكن عن طريق برنامج بال C# أن يتم جلب البيانات من قاعدتي البيانات و عمل المقارنة بينها و لكن هذه الطريقة ليست عملية كونها ستستغرق وقتاً كلما زاد عدد البيانات في قاعدة البيانات.
اختيار أحد هذه الحلول يعتمد على نوعية و طبيعة قاعدة البيانات لديكِ و عدة أمور أخرى.
لذلك يفضل أن تقرري أي الحلول هو الأنسب في حالتك حتى يتم التوضيح بشكل أكبر.
الحلين الأول و الثاني التي ذكرتها تفترض أن السيرفرين يمكنهما التواصل مع بعضهما أما الحل الثالث فيكفي أن يكون البرنامج الذي سيتم كتابته قادر على الاتصال مع قاعدتي البيانات.
بكل الأحوال يمكن تطبيق هذه الحلول حتى لو لم يكونوا على نفس الشبكة LAN, حيث يمكن استخدام ال VPN (Virtual Private Network) لربط شبكتي السيرفرين مع بعضها البعض.
بالنسبة ل MS Access فعلى حد علمي أنه لا يدعم ال Triggers.
Adel Khayata كتب:الحلين الأول و الثاني التي ذكرتها تفترض أن السيرفرين يمكنهما التواصل مع بعضهما أما الحل الثالث فيكفي أن يكون البرنامج الذي سيتم كتابته قادر على الاتصال مع قاعدتي البيانات.
بكل الأحوال يمكن تطبيق هذه الحلول حتى لو لم يكونوا على نفس الشبكة LAN, حيث يمكن استخدام ال VPN (Virtual Private Network) لربط شبكتي السيرفرين مع بعضها البعض.
بالنسبة ل MS Access فعلى حد علمي أنه لا يدعم ال Triggers.
طب ابدأ ادور منين أو اقرا ايه عشان اعمل الحل التالت
معلش اسألتى كتير بس انا متعاملتش مع الموضوع ده قبل كده
سأضرب لك مثالاً حتى تتوضح الفكرة:
افترضي أنه لديك جدول أسماء العملاء ( للسهولة : رقم العميل و اسم العميل )
يتم جلب بيانات جدول العملاء من قاعدتي البيانات ثم باستخدام تعليمة الحلقة يتم مقارن السطور بين بيانات الجدولين و أي فروقات يتم إدخالها/تعديلها/حذفها على حسب الحالة و طبعاً المقارنة يجب أن تتم على أساس رقم العميل ( مفتاح الجدول الأساسي Primary Key )
يمكن أن تواجهك بعض الحالات عند الحذف أو الاضافة تتطلب تدخل يدوي أو تحديد سيرفر رئيسي : للتوضيح أعطيكي مثالاً:
يوجد عميل في قاعدة البيانات الأولى و لكنه لا يوجد في قاعدة البيانات الثانية ... عند إجراء المقارنة بين الجدولين يمكن أن يتم اعتبار أن هذا العميل قد تمت اضافته على أساس أنه لا يوجد في قاعدة البيانات الثانية أو يمكن افتراض أنه قد تم حذفه من قاعدة البيانات الثانية و بالتالي يجب أن يتم تحديد أي السيرفرين له الأفضلية.
ملاحظة: فكرة الحل الثالث طرحتها كأحد الحلول لمشكلتك و لكنها تحتاج إلى تحليل معمق لدراسة كافة الحالات التي يمكن أن تحديث و تتطلب أيضاً إضافة بعض الحقول إلى الجداول ( مثل Timestamp ) .