الحفاظ على مزامنة قواعد بيانات التطوير في بيئات متعددة

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

سؤال

أنا في مرحلة مبكرة من تطوير تطبيق ويب تم إنشاؤه في VS2008.لدي جهاز كمبيوتر مكتبي (حيث يتم إنجاز معظم العمل) وجهاز كمبيوتر محمول (لقابلية النقل في بعض الأحيان) حيث أستخدم AnkhSVN للحفاظ على مزامنة كود المشروع.ما هي أفضل طريقة للحفاظ على مزامنة قاعدة بيانات التطوير الخاصة بي (SQL Server Express) أيضًا؟

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

أفكر في وضع ملفات .MDF و.LDF تحت التحكم بالمصادر، لكنني أشك في أن SQL Server Express سيتعامل معها بأمان إذا قمت بتحديث SVN وتم انتزاع الملفات من تحتها واستبدالها بنسخ أحدث.إن لصق ملفين ثنائيين كبيرين في التحكم بالمصادر لا يبدو حلاً أنيقًا أيضًا، حتى لو كان مجرد قاعدة بيانات تطوير بسيطة.أي اقتراحات؟

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

المحلول

بالإضافة إلى البرنامج النصي CREATE لقاعدة البيانات الخاصة بك، لماذا لا تحتفظ ببيانات افتراضية أو نموذج نصي للبيانات أيضًا؟

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

قد ترغب أيضًا في إلقاء نظرة على سؤال قمت بنشره منذ بعض الوقت:

أفضل أداة لإنشاء البرامج النصية لتغيير SQL تلقائيًا

نصائح أخرى

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

ومع ذلك، مع كل ما قيل، إذا كنت لا تعتقد أنك ملتزم بما يكفي لتنفيذ نوع ما من التحكم في الإصدار (سواء كان يدويًا أو شبه آلي)، فأنا أوصيك بشدة بمراجعة ما يلي:

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

يمكنك تخزين نسخة احتياطية (ملف .bak) لقاعدة البيانات الخاصة بك بدلاً من ملفات .MDF و.LDF.
يمكنك استعادة قاعدة بياناتك بسهولة باستخدام البرنامج النصي التالي:

use master
go

if exists (select * from master.dbo.sysdatabases where name = 'your_db')
begin
    alter database your_db set SINGLE_USER with rollback IMMEDIATE
    drop database your_db
end

restore database your_db
from disk = 'path\to\your\bak\file'
with move 'Name of dat file' to 'path\to\mdf\file',
     move 'Name of log file'  to 'path\to\ldf\file'
go

يمكنك وضع البرنامج النصي المذكور أعلاه في ملف نصي Restore.sql واستدعائه من ملف دفعي باستخدام الأمر التالي:

osql -E -i restore.sql

بهذه الطريقة يمكنك إنشاء ملف نصي لأتمتة العملية برمتها:

  • احصل على أحدث نسخة احتياطية من DB من مستودع SVN أو أي تخزين مناسب
  • استعادة قاعدة البيانات الحالية باستخدام ملف bak

نحن نستخدم مجموعة من، أخذ نسخ احتياطية من البيئات الأعلى إلى الأسفل.
بالإضافة إلى استخدام ApexSql للتعامل مع الإعداد الأولي للمخطط.
تم مؤخرًا استخدام عمليات الترحيل دون سرعة الصوت، باعتبارها عملية مشفرة يتم التحكم فيها بالمصدر، ويتم تشغيلها من خلال طريقة CI للحصول على نصوص التغيير، وهناك أيضًا مشروع "tarantino" تم تطويره بواسطة headspring خارج تكساس.

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

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