ما هي الطريقة السهلة لنشر تغييرات قاعدة البيانات باستخدام SQL Server؟

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

سؤال

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

كنت أقرأ المقال "12 خطوة لتحسين رمز"وفي حالات اختبار جويل رقم 2: هل يمكنك إنشاء بناء في خطوة واحدة؟

الآن كنت أتساءل ، هل هذا يعني بناء النشر (حتى يتمكن العميل من تحديث نشره).

الآن المشكلة الرئيسية التي أقوم بتشغيلها ، هي كيف يمكنك القيام بتحديث قاعدة بيانات خطوة واحدة؟

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

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

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

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

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

المحلول

هناك مستويات مختلفة من التعقيد الذي يمكنك مروره:

  • إذا كان لديك نصوص تحديث تقوم بإنشائها يدويًا ، وتبحث فقط عن طريقة لتطبيقها بسهولة على خوادم مختلفة ، تحقق من SSW SQL نشر بواسطة SSW Consulting. يمكنه التعامل مع هذا السيناريو بشكل جيد للغاية

  • إذا كنت تميل إلى القيام بالمزيد من نهج فرق قاعدة البيانات ، فإن Red Gate's SQL مقارنة (سبق ذكره) و SQL Packager اصنع مجموعة رائعة. يمكنك اختلاف قاعدة البيانات بين القديم والجديد ثم تطبيق التغييرات في حزمة لطيفة - كمشروع exe أو A c#

  • إذا كنت تريد نهجًا حقيقيًا ونهائيًا ومدروسًا جيدًا (مع القليل من منحنى التعلم) ، تحقق من الابتكار DBGHOST مقاربة. إنها منهجية / تقنية كاملة كيفية التعامل مع تطوير قاعدة البيانات والتحديثات الإضافية. إنها قوية للغاية وتبدو واعدة للغاية-لكنها مقاربة شاملة أو لا شيء: إما أن تشتريها وتستخدمها من طرف إلى طرف ، أو لا تفعل ذلك

آمل أن يساعد هذا قليلا!

نصائح أخرى

Redgate لديه أداة SQL مقارنة لمقارنة قواعد البيانات وإنشاء برنامج نصي للمزامنة. اعتدنا على استخدامه ولكن تم تحويله مؤخرًا إلى البرامج النصية اليدوية باستخدام نفس العملية التي تصفها. إن استخدام البرامج النصية اليدوية والرائعة والبرامج النصية برقم إصدار فريد قد نجحت بشكل جيد.

لدينا البرامج النصية للترقية المدمجة في اختبارات الوحدة حتى يتم اختبارها مع الكود كجزء من التكامل المستمر. أعتقد أن هذا جزء مهم من أجل "صنع بناء في خطوة واحدة".

ألقِ نظرة على منشور المدونة هذا. لقد استخدمت هذا النوع من البرنامج النصي التحديث الفردي من أي إصدار DB في مشاريع زوجين ويعمل بشكل جيد.

http://blogs.msdn.com/danhardan/archive/2007/03/30/database-change-scripts-mambo-style.aspx

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

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

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

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

الإجابة على السؤال الأول عن "الآن كنت أتساءل ، هل هذا يعني بناء النشر (حتى يتمكن العميل من تحديث نشره)؟"

أعتقد أن اختبار Joel #2 ليس لتحركات النشر إلى Prod ، ولكن لتواصل التواصل أثناء التطوير.

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

قم بتطوير قاعدة البيانات الخاصة بك كمجموعة من التصحيحات التي تعتمد على بعضها البعض. ثم استخدم أداة مثل https://github.com/luvdasun/sqlpatch (من قبلي) لبناء ملف SQL للنشر.

ستقوم SQLPatch بفرز التصحيحات بالترتيب الصحيح وتأكد من تنفيذ كل تصحيح مرة واحدة تمامًا ، حتى لو تم تشغيل البرنامج النصي نفسه مرتين.

يمكن استخدام هذه الاستراتيجية لنشر قاعدة البيانات الخاصة بك في بيئة CI/CD. هذا يجعل النشر سهلاً مثل الضغط على فرع.

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

قدمت Microsoft نفسها تطبيقات مستوية البيانات في SQL 2012 كخيار مجاني لنشر قواعد البيانات وترقيتها.

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

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