نقل التغييرات من قاعدة بيانات التطوير إلى قاعدة بيانات الإنتاج

StackOverflow https://stackoverflow.com/questions/1082339

سؤال

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

ما هي أفضل طريقة لنقل التغييرات التي قمت بها على قاعدة البيانات المحلية إلى قاعدة البيانات المستضافة؟

إذا كان الأمر مهمًا، فأنا أستخدم MS Sql Server (2008)

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

المحلول

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

وبهذه الطريقة، يتم تضمينها في التحكم بالمصادر لجميع بقية التعليمات البرمجية أيضًا.

هناك التغييرات المجلد الفرعي في مشروع قاعدة البيانات حيث أضع ملفات SQL التي تطبق أي تعديلات أو إضافات جديدة على قاعدة البيانات للإصدارات اللاحقة.

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

كقاعدة عامة، لا ينبغي عليك أبدًا إجراء تغييراتك مباشرة في قاعدة البيانات - بدلاً من ذلك قم بتعديل برنامج SQL النصي في المشروع وتطبيقه على قاعدة البيانات للتأكد من تحديث كود المصدر (ملفات SQL) دائمًا.

نصائح أخرى

نقوم بذلك في عالم (Ruby on) Rails من خلال كتابة "عمليات الترحيل"، والتي تلتقط التغييرات التي تجريها على بنية قاعدة البيانات في كل نقطة.يتم تشغيلها باستخدام أداة ترحيل (مهمة لـ rake)، والتي تكتب أيضًا إلى جدول قاعدة البيانات حتى تعرف ما إذا كان قد تم تشغيل عملية ترحيل معينة أم لا.

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

لا أعرف أيًا من هؤلاء، ولكن تحقق من هذه القائمة.أرى الكثير من الأشياء المدفوعة هناك، ولكن يجب أن يكون هناك شيء مجاني.أيضًا تحقق من هذا.

أقوم بترحيل التغييرات عبر البرامج النصية للتغيير التي كتبها المطورون عندما قاموا باختبار/التحقق من تغييراتهم.(الاستثناء هو نقل البيانات الكبيرة.) يتم تخزين كافة البرامج النصية في نظام التحكم بالمصدر.ويمكن التحقق منها عن طريق مسؤولي قواعد البيانات.

إنها عملية يدوية وتستغرق وقتًا طويلاً ولكنها عملية فعالة وآمنة وخاضعة للرقابة.

تعتبر قواعد البيانات حيوية للغاية بحيث لا يمكن نسخها من المطور.

هناك أدوات للمساعدة في إنشاء/التحقق من هذه البرامج النصية.يرى http://www.red-gate.com/ لقد استخدمت أدواتهم لمقارنة قاعدتي بيانات لإنشاء البرامج النصية.بريان

إذا كانت التغييرات صغيرة، أحيانًا أقوم بها يدويًا.لإجراء تغييرات أكبر، أستخدم البوابة الحمراءمقارنة SQL لإنشاء برامج نصية للتغيير.يتم التحقق منها يدويًا وتشغيلها في بيئة ضمان الجودة أولاً للتأكد من أنها لا تكسر أي شيء.بالنسبة للتغييرات الكبيرة، نقوم بتشغيل نسخة احتياطية خاصة قبل إجراء التغيير في كل من ضمان الجودة والإنتاج.

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

طريقة استخدام مقارنة RedGate DB ليست جيدة أيضًا. لا يزال أمامك الكثير من العمل اليدوي، ويمكنك تخطي بعض الخطوات عن طريق الخطأ.

انها تحتاج الى شيء أفضل.وكان هذا هو السبب وراء قيامنا ببناء "أداة Agile DB Recreation/Import/Reverse/Export"الأداة مجانية.

مزايا:يستخدم المطورون لديك أي أدوات مفضلة لتطوير قاعدة بيانات DEV.ثم يقومون بتشغيل DB RIRE ويقوم بإنشاء عكسي لقاعدة البيانات (الجداول، وطرق العرض، وproc proc، وما إلى ذلك) وتصدير البيانات إلى ملفات XML.ملفات XML التي يمكنك الاحتفاظ بها في أي نظام مستودع تعليمات برمجية.

والخطوة الثانية هي تشغيل DB RIRE مرة أخرى لإنشاء نصوص برمجية مختلفة بين البنية والبيانات في ملفات XML وفي قاعدة بيانات الإنتاج.

بالطبع يمكنك إجراء أكبر عدد ممكن من التكرارات التي تحتاجها.

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