إدارة تغيير قاعدة البيانات باستخدام البرامج النصية التي تم إنشاؤها اليد [مغلقة

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

سؤال

حاجتي أساسي إلى حد ما ولا أريد إعادة بناء العجلة. أحب البرنامج النصي لقاعدة البيانات الخاصة بي وقام برامج نصية مكتوبة لتحديثه من إصدار واحد إلى جداول IE 001-sheemes.sql، 002 تغيير العمود.

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

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

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

المحلول 7

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

نصائح أخرى

هل نظرت في افتح DBDIFF. بعد؟ قد يكون مكان جيد للبدء.

إذا قمت بتغيير رأيك حول المصدر المفتوح، البوابة الحمراء SQL قارن هي الطريقة للذهاب المنظمة البحرية الدولية.

هناك مشروع مثير للاهتمام sqlrunner. على المصنف - إنه C #، إنه .NET، إنه الماضي "قبل ألفا" :-)

لم أستخدمها بنفسي، لكنها لا تزال جيدة جدا، IMHO.

مارك

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

لدي بالفعل جدول في مخططي الذي يقوم بتخزين معرف لكل برنامج نصي تغيير (الذي يطابق رقم الحالة في نظام تعقب الأخطاء الخاص بي). في نهاية كل تطبيق Script، أدخل المعرف في هذا الجدول. لدي برنامج نصي منفصل يتحقق لمعرفة ما تم القيام به في أي مثيل محدد لقاعدة البيانات. من الممكن أتمتة تشغيل كل من البرامج النصية التي لم يتم تشغيلها بعد، لكنني أحب تشغيل البرامج النصية تغيير يدويا في حالة ظهور أي شيء خاطئ.

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

أريد أن أكتب جميع البرامج النصية بنفسك يمكنك الاستفادة من SQL Server 2005 TableDiff فائدة هذا سوف يمنحك الكثير من المرونة. يمكن العثور على بعض أمثلة الاستخدام هنا

إذا كان لديك جميع البرامج النصية الخاصة بك للحصول على إصدار معين في مجلد، فيمكنك تشغيل هذا كملف دفعة إذا قمت بوضعه في هذا المجلد:

for %%X in (*.SQL) do SQLCMD -S <SERVER_NAME> -d <DATABASE_NAME> -E -I -i "%%X"  >> ResultBatch.txt

آسف، أنا لا أتذكر أين حصلت على هذا من أو أود أن أعطي الائتمان.

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

استخدام كيوظاز. انها جافا رغم ذلك.

نعم، يمكنك كتابة البرامج النصية الترحيل الخاصة بك في متغير SQL من اختيارك.

يتم اختباره جيدا واستخدامه من قبل الكثير من الناس.

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