سؤال

لقد قمت بإنشاء تطبيق MS Access 2003، وتم إعداده كتكوين منفصل للواجهة الأمامية/الخلفية، مع مجموعة مستخدمين مكونة من حوالي خمسة أشخاص.توجد الواجهة الأمامية .mdb على خادم ملفات الشبكة، وتحتوي على جميع الاستعلامات والنماذج والتقارير وتعليمات VBA البرمجية، بالإضافة إلى روابط لجميع الجداول الموجودة في الواجهة الخلفية .mdb وبعض الروابط إلى مصادر بيانات ODBC مثل AS/ 400.تقع الواجهة الخلفية على نفس خادم ملفات الشبكة، وتحتوي فقط على بيانات الجدول.

كان هذا يعمل بشكل جيد حتى "بدأت البث المباشر" وبدأ عدد قليل من المستخدمين في تقديم طلبات التحسين وتقارير الأخطاء وما إلى ذلك.لقد قمت بطرح تعليمات برمجية جديدة عن طريق تطوير/اختبار نسختي الخاصة من الواجهة الأمامية .mdb في مجلد شبكة آخر (المرتبط بنفس الواجهة الخلفية .mdb)، ثم نشر الملف المكتمل في "تعال-" and-get-it"، لتنبيه المستخدمين، ويقومون بنسخ/لصق ملف الواجهة الأمامية الجديد في المجلدات الخاصة بهم على الشبكة.بهذه الطريقة، يمكن لكل مستخدم تحديث الواجهة الأمامية الخاصة به عندما يكون في "نقطة التوقف" دون الحاجة إلى إخراج الجميع مرة واحدة.

لقد وجدت أنه عندما أقوم بالتطوير الآن، أحيانًا يصبح الوصول بطيئًا للغاية.على سبيل المثال، عندما أقوم بتطوير نموذج وأحاول النقر فوق القائمة المنسدلة في مربع الخصائص، سيتم دفع سهم القائمة المنسدلة، ولكن الأمر سيستغرق بضع ثوانٍ قبل ظهور قائمة الخيارات.أو أن هناك الكثير من التأخير في تحديد عناصر التحكم ونقلها في النموذج.أو الكثير من تأخر لوحة المفاتيح.

ثم، في أوقات أخرى، لا يوجد أي تأخير على الإطلاق.

أتساءل عما إذا كان السبب في ذلك هو أنني مرتبط بنفس الواجهة الخلفية مثل المستخدمين الآخرين.لقد بذلت جهدًا معقولًا لإعداد الاستعلامات والنماذج والتقارير وما إلى ذلك.مع الحد الأدنى من قفل السجل، إن وجد، حسب الحاجة.ولكن ربما فاتني شيء ما، أو ربما هناك مشكلة أخرى في الأداء أحتاج إلى معالجتها.

لكنني أتساءل عما إذا كانت هناك طريقة أفضل بالنسبة لي لإعداد الواجهة الخلفية للتطوير الخاص بي .mdb، حتى أتمكن من اختبار الكود الخاص بي على بيانات "آمنة" بدلاً من نفس البيانات المباشرة مثل بقية المستخدمين .أخشى أنها مسألة وقت فقط قبل أن أفسد بعض البيانات، ربما في أسوأ لحظة ممكنة.

من الواضح أنه كان بإمكاني إعداد mdb منفصل للواجهة الخلفية وإعادة تكوين روابط الجدول يدويًا في الواجهة الأمامية في كل مرة، باستخدام Linked Table Manager.لكني آمل أن يكون هناك حل أكثر أناقة من ذلك.

وأنا أتساءل عما إذا كانت هناك أية مشكلات أخرى في الأداء يجب أن أفكر فيها في تكوين قاعدة البيانات المقسمة متعددة المستخدمين.

يحرر:كان يجب أن أضيف أنني عالق في MS Access (وليس MS-SQL أو أي واجهة خلفية "حقيقية" أخرى)؛لمزيد من التفاصيل انظر تعليقي على هذا المنصب.

هل كانت مفيدة؟

المحلول

إذا قام جميع المستخدمين بمشاركة الطرف الأمامي، فهذا هو التكوين الخطأ.

يجب أن يكون لكل مستخدم نسخة فردية من النهاية الأمامية. يتم ضمان مشاركة الواجهة الأمامية أن تؤدي إلى فساد متكرر للنهاية الأمامية المشتركة، وكذلك الفضال الغريب للنماذج والوحدات الواردة في الواجهة الأمامية.

ليس من الواضح لي كيف يمكن أن تنطوي في نفس النسخة من النهاية الأمامية أن المستخدمين النهائي يستخدمون، نظرا للبداية ب A2000، محظور (بسبب "نموذج حفظ متجانسة"، حيث يتم تخزين مشروع VBA بأكمله في حقل Blob واحد في سجل واحد في أحد طاولات النظام).

أنا حقا لا أعتقد أن المشاكل ناتجة عن استخدام بيانات الإنتاج (على الرغم من أنه من المحتمل أن لا تكون فكرة جيدة تطوير بيانات الإنتاج، كما قال آخرون). أعتقد أنهم ناتج عن ضعف ممارسات الترميز ونقص الصيانة بموجب القانون النهائي الأمامي.

  1. قم بإيقاف تشغيل الترجمة عند الطلب في خيارات VBE.

  2. تأكد من طلب خيار صريح.

  3. ترجمة التعليمات البرمجية الخاصة بك في كثير من الأحيان، بعد كل خطوط قليلة من التعليمات البرمجية - لجعل هذا السهل، أضف الزر "ترجمة" إلى شريط أدوات VBE الخاص بك (بينما أنا في ذلك، وأضيف أيضا زر مكدس المكالمات أيضا).

  4. بذريا جعل نسخة احتياطية من الطرف الأمامي الخاص بك وتركيبها وإعادة ترجمة التعليمات البرمجية. يتم تحقيق ذلك عن طريق تشغيل الوصول باستخدام مفتاح التبديل / فك، وفتح وصول الإغلاق الخاص بك، وإغلاق الوصول، وفتح الطرف الأمامي الخاص بك مع الوصول (مع مفتاح SHIFT HOAD لتجاوز رمز بدء التشغيل)، ثم ضغط نهاية الواجهة الأمامية (مع التحول أدخل المفتاح)، ثم تجميع المشروع بأكمله ومضغط واحد آخر مرة. يجب عليك القيام بذلك قبل أي إصدار رمز كبير.

بعض الأفكار الأخرى:

  1. أنت لا تقول ما إذا كان خادم Windows. عرضت خوادم Linux التي تم الوصول إليها عبر Samba مشاكل في الماضي (على الرغم من أن بعض الأشخاص يقسمونها من قبلهم ويقولون أنهم أسرعوا بشكل كبير من خوادم Windows)، وقد احتاجت خوادم Novell التاريخية للحصول على إعدادات تمكين ملفات النفاثة التي يتم تحريرها بشكل موثوق. هناك أيضا بعض الإعدادات (مثل Oplocks) التي يمكن ضبطها على خادم Windows لجعل الأمور تعمل بشكل أفضل.

  2. تخزين MDBS Jet الخاص بك في الأسهم مع مسارات قصيرة. Server Data MyProject MyReallyLongFolderName Access Databases ستكون بيانات قراءة أبطأ بكثير من Server Databases. هذا حقا يجعل فرقا كبيرا.

  3. الطاولات المرتبطة متجر البيانات الوصفية التي يمكن أن تصبح قديمة. هناك نوعان من الخطوات السهلة وواحدة جذرية ليتم اتخاذها لإصلاحها. أولا، مدمجة النهاية الخلفية، ثم مدمجة الطرف الأمامي. هذا هو واحد سهل. إذا لم يساعد ذلك، احذف الروابط وإعادة إنشاءها بالكامل من الصفر.

  4. قد تفكر أيضا في توزيع MDE للمستخدمين النهائيين بدلا من MDB، لأنها لا تستطيع غيرها (التي يمكن أن تقوم بها MDB).

  5. يرى أسئلة وأجوبة أداء توني للحصول على معلومات الأداء المعممة الأخرى.

نصائح أخرى

1) إعادة ربط الجداول الوصول من التعليمات البرمجيةhttp://www.mvps.org/access/tables/tbl0009.htm.

بمجرد أن أكون مستعدا لنشر MDE جديد للمستخدمين الذين أقليص الجداول، قم بإجراء MDE ونسخ MDE إلى الخادم.

2) أنا على وجه التحديد أنشأت الأداة المساعدة الحرة لتحديث السيارات مجانا حتى أتمكن من إجراء تغييرات على FE MDE كلما أردت وأن أكون واثقا جدا من أن شخصا ما في المرة القادمة ذهب شخص ما لتشغيل التطبيق أنه سيسحب آخر إصدارا. لمزيد من المعلومات حول الأخطاء أو أداة Updater Auto Fe Upder شاهدت الأداة المساعدة Auto Fe مجانية http://www.granite.ab.ca/access/autofe.htm. في موقعي على موقع الويب الخاص بي للحفاظ على حتى على كل جهاز كمبيوتر محدث.

3) الآن عند العمل في الموقع في عملاء، أقوم بإجراء التحديثات بنية الجدول بعد ساعات عندما يكون الجميع خارج النظام. تعرف على كيفية: اكتشاف وقت الخمول المستخدم أو عدم النشاط في Access 2000 (Q210297) http://support.microsoft.com/؟kbid=210297. ACC: كيفية اكتشاف وقت الخمول المستخدم أو عدم النشاط (Q128814) http://support.microsoft.com/؟kbid=128814.

ومع ذلك، وجدنا أن التعليمات البرمجية التي يتم تشغيلها على حدث Timer يجب تعطيل للمبرمجين. وإلا تبدأ الأشياء الغريبة عند الحدوث عند تحرير التعليمات البرمجية.

أيضا معاينة الطباعة لن تسمح في بعض الأحيان للمستخدمين بتشغيل عنصر قائمة لتصدير التقرير إلى Excel أو غيره. لذلك اضطررت إلى النقر بزر الماوس الأيمن على تقرير المعاينة للحصول على نوع من التركيز الداخلي مرة أخرى على التقرير حتى يتمكنوا من تصديرها بعد ذلك. كما ساعد ذلك من خلال توسيع الموقت إلى خمس دقائق.

كان الجانب السلبي لتوسيع الموقت إلى خمس دقائق إذا كان الشخص يبقى في نفس الشكل وفي نفس السيطرة لأجزاء كبيرة من اليوم، أي شخص يقوم به نفس الاستفسارات، لم يدرك الروتين أنهم قد فعلوا شيئا بالفعل. سأظل في بعض المنطق في وقت ما لإعادة ضبط هذا الموقت كلما فعلوا شيئا ما في البرنامج.

4) في إشارة إلى شخص آخر يعلق حول البرامج النصية ومحاولة تحديث المخطط http://home.gci.net/~mike-noel/compareem-lite/compareem.htm.. وبعد في حين أنه يحتوي على Quirks لها تقوم بإنشاء رمز VBA لتحديث الجداول والحقول والفهارس والعلاقات.

استخدم VBA لإلغاء تحديد وإعادة ربط الجداول الخاصة بك إلى الهدف الجديد عند التبديل من Dev to Prod. لقد مرت سنوات عديدة بالنسبة لي أن أتذكر بناء الجملة - أنا أعرف أن الوظيفة كانت بسيطة في الكتابة.

أو استخدم MS-Access للتحدث إلى MS-Access من خلال ODBC، أو بعض اتصال البيانات الآخر الذي يعيش خارج MDB العميل.

كما هو الحال مع جميع قواعد بيانات قاعدة الملفات، فسوف تعمل في النهاية على مشاكل في استخدام الذروة أو عندما تذهب فوق رقم سحري صغير في مكان ما بين 2 و 30.

أيضا، تميل الوصول إلى الفاسد بشكل متكرر، لذلك يجب إجراء النسخ الاحتياطي والضغط والإصلاح على أساس متكرر. أدوات الحزب الثالث المستخدمة في الوجود لأتمتة هذه المهمة.

بقدر ما يذهب الأداء، تتم معالجة البيانات جانب العميل، لذلك قد ترغب في استخدام شيء مثل NetMeter لمشاهدة مقدار البيانات التي تسير عبر السلك. نفس المبدأ حول فهرسة وتجنب عمليات مسح الطاولة تنطبق على قاعدة الملفات DBS أيضا.

العديد من الاقتراحات الجيدة من أشخاص آخرين.ها هي قيمة 2 ملي سنت.بياناتي الخلفية موجودة على الخادم ويمكن الوصول إليها من خلال تعيين Drive.في حالتي، محرك Y.يحصل مستخدمو الإنتاج على التعيين من خلال برنامج نصي لتسجيل الدخول باستخدام الدليل النشط.ثم يتم تنفيذ السيناريوهات التالية بسهولة عن طريق الملف الدفعي:

  • قم بالتطوير ضد الكمبيوتر المحلي عن طريق تنفيذ أمر فرعي في ملف دفعي
  • تشغيل التقارير مقابل بيانات الليلة الماضية عن طريق الإشارة Y إلى خادم النسخ الاحتياطي (للقراءة فقط)
  • قم بتشغيل التقارير مقابل بيانات نهاية الشهر من خلال الإشارة إلى الدليل الصحيح
  • اختبار ضد السيناريوهات المتخصصة عن طريق الاحتفاظ بدليل خاص

في بيئتي (متوسط ​​5 مستخدمين متزامنين، 1000 صف، وليس 10000 صف.) حدث تلف، ولكنه نادر ويمكن التحكم فيه.لقد لجأنا إلى النسخ الاحتياطي للأيام السابقة مرة واحدة فقط خلال السنوات القليلة الماضية.نحن نستخدم SQL Server لأشياءنا ذات الحجم الكبير، ولكن ليس من المناسب التطوير مقابلها، ربما لأنه ليس لدينا مسؤول SQL في الموقع.

قد تجد أيضا بعض الإجابات على هذا السؤال (كيفية استخراج مخططات من الوصول) أن تكون مفيدة كذلك. بمجرد استخراج مخطط باستخدام إحدى التقنيات التي اقترحتها، يمكنك الحصول على مجموعة كاملة من الخيارات الجديدة مثل القدرة على استخدام عنصر تحكم المصدر على المخططات، وكذلك القدرة على بناء بيئات اختبار "نظيفة" بسهولة.

تحرير للاستجابة للتعليق: لا توجد طريقة سهلة للتحكم في قاعدة بيانات Access بتنسيقها الأصلي، ولكن ملفات المخطط هي مجرد ملفات نصية مثل أي شيء آخر. وبالتالي، يمكنك التحقق منها داخل وخارج برنامج التحكم المصدر الخاص باختيارك لسهولة التحكم في الإصدار / الاستعادة.

أو بالطبع، يعتمد عليك وجود سلسلة من البرامج النصية التي تم إعدادها لإعادة إنشاء قاعدة البيانات الخاصة بك من المخطط. بمجرد القيام بذلك، عادة ما تكون تافهة إلى حد ما لإنشاء خيار / نسخة بديلة أعيد تنشئه في موقع مختلف، مما يتيح لك إنشاء بيئات اختبار من أي إصدار سابق من المخطط. آمل أن توضح قليلا!

إذا كنت ترغب في تحديث مخطط MDB النهائي الخلفي تلقائيا عند الافراج عن عملاء جديد للعملاء، فهذا شاهد قارنهيم http://home.gci.net/~mike-noel/compareem-lite/compareem.htm. سوف تولد بسعادة رمز VBA تحتاج إلى إعادة إنشاء MDB. أو التعليمات البرمجية لإنشاء الاختلافات بين MDBs حتى تتمكن من القيام بترقية إصدار من MDB الموجودة بالفعل. إنه أمر غريب بعض الشيء ولكن يعمل.

أنا استخدامها في كل وقت.

تحتاج إلى فهم أن ملف MDB المشترك للبيانات ليس حلا قويا. تشير Microsoft إلى أن SQL Server أو بعض قاعدة البيانات القائمة على الخادم ستكون حلا أفضل بكثير وستسمح لك باستخدام نفس الواجهة الأمامية للوصول. سيساعدك معالج الترحيل في إجراء التحول إذا كنت ترغب في الذهاب بهذه الطريقة.

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

لفهم مشكلات الأداء التي تحتاج إلى فهم ذلك إلى الخادم ملف MDB مع البيانات الموجودة فيه ببساطة ذلك، ملف. نظرا لعدم وجود رمز يعمل على الخادم، فإن الخادم لا يفهم المعاملات، وقفل السجل إلخ. إنه يعرف ببساطة أن هناك ملف يحاول حفنة من الناس القراءة والكتابة بسلاسة.

مع نظام قاعدة بيانات مثل SQL Server، Oracle، DB2. MySQL إلخ. يعمل برنامج قاعدة البيانات على الخادم وينظر إلى الخادم مثل برنامج واحد يصل إلى ملف قاعدة البيانات. هذا هو برنامج قاعدة البيانات (يعمل على الخادم) الذي يتعامل مع قفل التسجيل أو المعاملات والتزامن أو التسجيل أو النسخ الاحتياطي للبيانات / الاسترداد وجميع الأشياء اللطيفة الأخرى التي يريدها المرء من قاعدة بيانات.

نظرا لأن برنامج قاعدة بيانات مصمم ليتم تشغيله على الخادم مصمم للقيام بذلك وفقط ذلك، فيمكنه القيام بذلك بشكل أفضل وأكثر فعالية أن البرنامج مثل الوصول إلى قراءة ملف مشترك (MDB).

هناك قاعدتان للتطوير من البيانات الحية

القاعدة الأولى هي. وبعد وبعد لا تتطور أبدا ضد البيانات الحية. قط.

القاعدة الثانية هي. وبعد . لم تتطور ضد البيانات الحية. قط.

يمكنك تغيير الروابط برمجيا للجداول المرتبطة، بحيث يمكنك كتابة ماكرو لتغيير الروابط الخاصة بك عند نشر إصدار جديد.

التطبيق بطيء لأنه يمكن الوصول إلى MS، ولا يعجبك العديد من المستخدمين المتزامنين (حيث يكون الكثيرون أي رقم> 1).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top