سؤال

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

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

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

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

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

إذا ما كنت تستخدم تلقائيا نشر قواعد البيانات SQL Server من اختبار العيش ؟

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

المحلول

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

وإلا أنا أتفق redgate مكلفة إذا لم يكن لديك شركة شراء ذلك بالنسبة لك.إذا كنت يمكن أن تحصل شركة شراء بالنسبة لك على الرغم من أنه هو حقا يستحق كل هذا العناء!

نصائح أخرى

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

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

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

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

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

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

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

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

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

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

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

لديهم طبعات معظم قواعد شعبية ، بما في ذلك بالطبع Sql Server.

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

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

باستخدام SMO/DMO ، فإنه ليس من الصعب جدا أن تولد السيناريو المخطط.البيانات هو أكثر متعة قليلا, ولكن لا تزال قابلة للتنفيذ.

في اتخاذ "السيناريو هذا" النهج ، ولكن قد ترغب في النظر في شيء على طول هذه الخطوط:

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

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

أنا باستخدام دون سرعة الصوت هو الهجرات آلية لذا يجب dll مع الطبقات في squential أجل أن يكون 2 طرق صعودا وهبوطا.هناك التكامل المستمر/بناء السيناريو هوك في نانت ، لدرجة أنني يمكن أتمتة تحديث قاعدة البيانات الخاصة بي.

ليس أفضل thign في العالم ، لكنه يتفوق كتابة DDL.

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

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

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

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

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

وقد علمت أيضا أن المؤشرات تحتاج إلى أن تعامل مثل رمز الملفات ووضعها في عنصر تحكم مصدر.

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

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

بلدي dbs ثم يكون الجدول الذي يحدد النسخة الحالية لذلك يمكن للمرء أن مدونة بسيطة نسبيا مجموعة من الاختبارات:

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

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

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

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

مرف

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

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