sql-server - ماهو - مزامنة بين قاعدتي بيانات sql server




نشر قواعد بيانات سكل سيرفر من الاختبار إلى ليف (10)

بالنسبة لمشاريعي أنا البديل بين سكل قارن من ريد بوابة ومعالج النشر قاعدة البيانات من ميكروسوفت التي يمكنك تحميلها مجانا هنا .

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

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

وأتساءل كيف يا رفاق إدارة نشر قاعدة بيانات بين ملقمات سكل 2، على وجه التحديد سكل سيرفر 2005. الآن، هناك تطور واحد الحية. كما ينبغي أن يكون هذا جزءا من بوندسكريبت (معيار ويندوز دفعة، حتى تفعل مع تعقيد الحالي من تلك البرامج النصية، وأنا قد التبديل إلى بويرشيل أو في وقت لاحق)، إدارة المؤسسة / إدارة ستوديو اكسبريس لا تحسب.

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

أو - نظرا لعدم وجود "إكسل كريت تابل" في T-سكل - هل تفعل شيئا يقوم بتصدير قاعدة بيانات موجودة في سكل-سكريبتس التي يمكنك تشغيلها على الملقم الهدف؟ إذا كانت الإجابة بنعم، هل هناك أداة يمكن تفريغ قاعدة بيانات معينة تلقائيا في استعلامات سكل والتي يتم تشغيلها خارج سطر الأوامر؟ (مرة أخرى، مدير المؤسسة / إدارة ستوديو اكسبرس لا تحسب).

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

الآن، أسمع الكثير من الاشياء العظيمة عن المنتجات بوابة الحمراء ، ولكن لمشاريع هواية، والثمن هو حاد قليلا.

لذا، ما الذي تستخدمه لنشر قواعد بيانات سكل سيرفر تلقائيا من الاختبار إلى ليف؟


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

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

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


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

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


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

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


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

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

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

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


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

بلدي دبس ثم يكون الجدول الذي يحدد الإصدار الحالي بحيث يمكن للمرء أن رمز مجموعة واضحة نسبيا من الاختبارات:

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

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

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

هناك بعض القضايا عند تطوير في بيئة الفريق ولكن هذا أكثر أو أقل معين على أي حال!

مورفي


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

يمكنني استخدام Microsoft.SqlServer.BatchParser.dll ومكتبات Microsoft.SqlServer.ConnectionInfo.dll في تطبيق وحدة التحكم.


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

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


لا تنس حل ميكروسوفت للمشكلة: فيسوال ستوديو 2008 قاعدة بيانات الطبعة . يتضمن أدوات لنشر التغييرات على قواعد البيانات، وإنتاج فرق بين قواعد البيانات للتخطيط و / أو تغييرات البيانات، واختبارات وحدة، وتوليد بيانات الاختبار.

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


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







release-management