سؤال

أريد أن أحصل على قواعد البيانات في إطار التحكم في الإصدار.هل من أحد لديه أي نصيحة أو المقالات الموصى بها للحصول على لي بدأت ؟

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

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

المحلول

مارتن فاولر كتب المفضل المادة حول هذا الموضوع ، http://martinfowler.com/articles/evodb.html.اخترت عدم وضع مخطط مقالب في إطار التحكم في الإصدار كما alumb بينما اقترح آخرون لأنني أريد طريقة سهلة لرفع مستوى الإنتاج قاعدة البيانات الخاصة بنا.

من أجل تطبيق ويب حيث سأحصل على واحدة قاعدة بيانات الإنتاج سبيل المثال ، استخدام التقنيات اثنين:

ترقية قاعدة بيانات مخطوطات

سلسلة ترقية قاعدة بيانات البرامج النصية التي تحتوي على DDL من الضروري الانتقال المخطط من نسخة N N+1.(هذه تذهب في نظام التحكم في الإصدار.) أ _version_history_ الجدول ، شيء من هذا القبيل

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

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

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

المطور رمل التزامن

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

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

نصائح أخرى

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

\وظائف
\الأمن
\Security\الأدوار
\Security\المخططات
\Security\Users
\الإجراءات المخزنة
\الجداول

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

هذا هو واحد من "المشاكل الصعبة" المحيطة التنمية.بقدر ما أعرف أن هناك أي حلول مثالية.

إذا كنت تحتاج فقط إلى متجر هيكل قاعدة البيانات وليس البيانات يمكنك تصدير قاعدة البيانات كما استعلامات SQL.(في إدارة المؤسسة:انقر بزر الماوس الأيمن على قاعدة بيانات -> إنشاء البرنامج النصي ل SQL.أوصي الإعداد "إنشاء ملف واحد لكل كائن" على علامة التبويب خيارات) ثم يمكنك ارتكاب هذه الملفات النصية إلى svn و الاستفادة من svn هو مهرجان دبي السينمائي الدولي تسجيل وظائف.

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

إذا كنت بحاجة للحفاظ على جميع البيانات كما أوصي حفظ نسخة احتياطية من قاعدة البيانات باستخدام Redgate (http://www.red-gate.com/) المنتجات للقيام المقارنات.أنها لا تأتي رخيصة ، لكنها تستحق كل بنس.

أولا يجب عليك اختيار نظام التحكم في الإصدار الذي هو حق لك:

  • المركزي إصدار نظام مراقبة - نظام موحد حيث المستخدمين تحقق/في/بعد العمل على الملفات و الملفات التي تبقى في واحد خادم مركزي

  • توزيع إصدار نظام مراقبة - نظام مستودع يجري استنساخ و كل استنساخ هو في الواقع نسخة احتياطية كاملة من المستودع ، حتى إذا كان أي تعطل الخادم ، ثم أي استنساخ مستودع يمكن استخدامها لاستعادة ذلك بعد اختيار النظام المناسب لتلبية الاحتياجات الخاصة بك, سوف تحتاج إلى إعداد المخزون الذي هو جوهر كل نظام التحكم في الإصدار كل هذا هو موضح في المقالة التالية: http://solutioncenter.apexsql.com/sql-server-source-control-part-i-understanding-source-control-basics/

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

  • SQL Server إدارة Studio عبر موفر MSSCCI,

  • Visual Studio أدوات البيانات SQL Server

  • 3rd الطرف أداة وحول apexsql عنصر تحكم مصدر

هنا في البوابة الحمراء ونحن نقدم أداة ، SQL المصدر التحكم, الذي يستخدم SQL مقارنة التكنولوجيا لربط قاعدة البيانات الخاصة بك مع TFS أو إس مستودع.هذه الأداة يدمج صواريخ أرض-أرض و يتيح لك العمل كما تفعل عادة, إلا أنه الآن يتيح لك ارتكاب الكائنات.

عن الهجرات النهج القائم على (أكثر ملاءمة النشر الآلي), نحن نقدم SQL تغيير الآلي (الذي كان يسمى سابقا ReadyRoll) ، مما يخلق ويدير مجموعة من النصوص الإضافية مثل مشروع Visual Studio.

في SQL المصدر التحكم من الممكن تحديد ثابت جداول البيانات.هذه هي المخزنة في مصدر عنصر التحكم كما إدراج البيانات.

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

قد ترغب في النظر في Liquibase (http://www.liquibase.org/).حتى إذا كنت لا تستخدم الأداة نفسها التي يعالج مفاهيم قاعدة بيانات إدارة التغيير أو إعادة بيع ديون جيدا.

+1 على كل من أوصى RedGate الأدوات ، مع توصية إضافية و التحذير.

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

التحذير هو أن مع كتابتها الحل أو خلاف ذلك ، RedGate أدوات ناعمة بما فيه الكفاية أنه من السهل أن ننسى SQL الحقائق الكامنة وراء التجريد.إذا قمت بإعادة تسمية كافة الأعمدة في الجدول ، SqlCompare لا يوجد لديه طريقة الخريطة القديمة الأعمدة إلى أعمدة جديدة و سيتم إسقاط جميع البيانات في الجدول.فإنه سيتم توليد تحذيرات ولكن رأيت الناس انقر الماضي.هناك نقطة العامة هنا صنع يستحق أعتقد أنه يمكنك فقط أتمتة DB الإصدارات و الترقية حتى الآن - على تجريدات جدا راشح.

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

مع VS 2010 ، استخدم قاعدة بيانات المشروع.

  1. النصي قاعدة البيانات الخاصة بك
  2. إجراء تغييرات على النصوص أو مباشرة على الخاص بك db server
  3. مزامنة باستخدام البيانات > مخطط مقارنة

يجعل الكمال DB الإصدارات الحل يجعل المزامنة DB هو نسيم.

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

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

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

هل يمكن أن ننظر أيضا في الهجرات الحل.هذه تسمح لك تحديد مخطط قاعدة البيانات في التعليمات البرمجية C# و لفة الخاص بك قاعدة بيانات الإصدار صعودا وهبوطا باستخدام MSBuild.

أنا حاليا باستخدام DbUp, و هو يعمل بشكل جيد.

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

الهجرات برمجيا تحديد قاعدة البيانات التحولات باستخدام روبي DSL;كل التحول يمكن تطبيقها أو (عادة) التراجع مما يسمح لك للانتقال إلى إصدار مختلف من DB schema في أي نقطة في الوقت المناسب.ملف تعريف هذه التحولات يمكن أن تكون دققت في التحكم في الإصدار مثل أي قطعة أخرى من التعليمات البرمجية المصدر.

لأن الهجرة هي جزء من ActiveRecord, عادة تجد في استخدام كامل كومة القضبان التطبيقات ؛ ومع ذلك ، يمكنك استخدام ActiveRecord مستقلة عن القضبان مع الحد الأدنى من الجهد.انظر هنا أكثر تفصيلا العلاج باستخدام AR الهجرات خارج القضبان.

كل قاعدة البيانات يجب أن تكون تحت مصدر رمز التحكم.ما ينقصنا هو أداة تلقائيا النصي جميع كائنات قاعدة البيانات - و "بيانات التكوين" - إلى الملف الذي ثم يمكن أن تضاف إلى أي مصدر نظام التحكم.إذا كنت تستخدم SQL Server ثم الحل هنا : http://dbsourcetools.codeplex.com/ .يكون متعة.- ناثان.

انها بسيطة.

  1. عند قاعدة المشروع جاهز ثم يجب إنشاء قاعدة بيانات كاملة النصي.هذا البرنامج النصي وتلتزم إس.هذا هو الإصدار الأول.

  2. بعد أن جميع المطورين يخلق تغيير البرامج النصية (تغيير..., جداول جديدة, sprocs ، إلخ).

  3. عندما تحتاج النسخة الحالية ثم يجب عليك تنفيذ كل تغيير جديد البرامج النصية.

  4. عندما تم الإفراج عن التطبيق الإنتاج ثم تعود إلى 1 (ولكن بعد ذلك سوف يكون المتعاقبة النسخة بالطبع).

نانت سوف تساعدك على تنفيذ تلك البرامج النصية تغيير.:)

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

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

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

لجعل تفريغ إلى عنصر تحكم التعليمات البرمجية المصدر نظام أسرع قليلا, يمكنك أن ترى الكائنات التي تم تغييرها منذ آخر مرة باستخدام معلومات الإصدار في sysobjects.

الإعداد: إنشاء جدول في قاعدة بيانات لكل تريد أن تحقق تدريجيا إلى عقد معلومات الإصدار من آخر مرة تحققت من ذلك (فارغة في الجولة الأولى).واضح هذا الجدول إذا كنت ترغب في إعادة تفحص كل بنية البيانات.

IF ISNULL(OBJECT_ID('last_run_sysversions'), 0) <> 0 DROP TABLE last_run_sysversions
CREATE TABLE last_run_sysversions (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

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

IF ISNULL(OBJECT_ID('tempdb.dbo.#tmp'), 0) <> 0 DROP TABLE #tmp
CREATE TABLE #tmp (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

SET NOCOUNT ON

-- Insert the values from the end of the last run into #tmp
INSERT #tmp (name, id, base_schema_ver, schema_ver, type) 
SELECT name, id, base_schema_ver, schema_ver, type FROM last_run_sysversions

DELETE last_run_sysversions
INSERT last_run_sysversions (name, id, base_schema_ver, schema_ver, type)
SELECT name, id, base_schema_ver, schema_ver, type FROM sysobjects

-- This next bit lists all differences to scripts.
SET NOCOUNT OFF

--Renamed.
SELECT 'renamed' AS ChangeType, t.name, o.name AS extra_info, 1 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id
WHERE o.name <> t.name /*COLLATE*/
AND o.type IN ('TR', 'P' ,'U' ,'V')
UNION 

--Changed (using alter)
SELECT 'changed' AS ChangeType, o.name /*COLLATE*/, 
       'altered' AS extra_info, 2 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id 
WHERE (
   o.base_schema_ver <> t.base_schema_ver
OR o.schema_ver      <> t.schema_ver
)
AND  o.type IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT oi.name 
         FROM sysobjects oi INNER JOIN #tmp ti ON oi.id = ti.id
         WHERE oi.name <> ti.name /*COLLATE*/
         AND oi.type IN ('TR', 'P' ,'U' ,'V')) 
UNION

--Changed (actually dropped and recreated [but not renamed])
SELECT 'changed' AS ChangeType, t.name, 'dropped' AS extra_info, 2 AS Priority
FROM #tmp t
WHERE    t.name IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
AND  t.name IN ( SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Deleted
SELECT 'deleted' AS ChangeType, t.name, '' AS extra_info, 0 AS Priority
FROM #tmp t
WHERE NOT EXISTS (SELECT * FROM sysobjects o
                  WHERE o.id = t.id)
AND t.name NOT IN (  SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Added
SELECT 'added' AS ChangeType, o.name /*COLLATE*/, '' AS extra_info, 4 AS Priority
FROM sysobjects o
WHERE NOT EXISTS (SELECT * FROM #tmp t
                  WHERE o.id = t.id)
AND      o.type  IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
ORDER BY Priority ASC

ملاحظة: إذا كنت تستخدم جمع غير قياسي في أي من قواعد البيانات الخاصة بك, سوف تحتاج إلى استبدال /* COLLATE */ مع قاعدة البيانات الخاصة بك ترتيب.أي COLLATE Latin1_General_CI_AI

لأن التطبيق يعمل عبر عدة RDBMSs نحن متجر لدينا تعريف المخطط في الإصدار التحكم باستخدام قاعدة بيانات محايدة عزم الدوران شكل (XML).نحن أيضا إصدار-التحكم في البيانات المرجعية لدينا قاعدة بيانات في تنسيق XML كما يلي (حيث "العلاقة" هو واحد من الجداول المرجعية):

  <Relationship RelationshipID="1" InternalName="Manager"/>
  <Relationship RelationshipID="2" InternalName="Delegate"/>
  etc.

ثم نستخدم نابعة من الأدوات لإنشاء مخطط الترقية و البيانات المرجعية ترقية السكربتات المطلوبة للانتقال من الإصدار العاشر من قاعدة البيانات إلى الإصدار X + 1.

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

لدينا الحاجة إلى إصدار لدينا قاعدة بيانات SQL بعد أن هاجر إلى x64 منصة لدينا النسخة القديمة اندلعت مع الهجرة.كتبنا C# التطبيق الذي يستخدم SQLDMO لتحديد كافة الكائنات SQL إلى المجلد:

                Root
                    ServerName
                       DatabaseName
                          Schema Objects
                             Database Triggers*
                                .ddltrigger.sql
                             Functions
                                ..function.sql
                             Security
                                Roles
                                   Application Roles
                                      .approle.sql
                                   Database Roles
                                      .role.sql
                                Schemas*
                                   .schema.sql
                                Users
                                   .user.sql
                             Storage
                                Full Text Catalogs*
                                   .fulltext.sql
                             Stored Procedures
                                ..proc.sql
                             Synonyms*
                                .synonym.sql
                             Tables
                                ..table.sql
                                Constraints
                                   ...chkconst.sql
                                   ...defconst.sql
                                Indexes
                                   ...index.sql
                                Keys
                                   ...fkey.sql
                                   ...pkey.sql
                                   ...ukey.sql
                                Triggers
                                   ...trigger.sql
                             Types
                                User-defined Data Types
                                   ..uddt.sql
                                XML Schema Collections*
                                   ..xmlschema.sql
                             Views
                                ..view.sql
                                Indexes
                                   ...index.sql
                                Triggers
                                   ...trigger.sql

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

كتبت هذا التطبيق منذ فترة ، http://sqlschemasourcectrl.codeplex.com/ والتي سوف مسح MSFT SQL db كثير من الأحيان كما تريد تلقائيا تفريغ الأشياء الخاصة بك (طاولات, مناظر, procs, وظائف, sql إعدادات) في إس.تعمل مثل السحر.أنا استخدامها مع Unfuddle (الذي يسمح لي أن الحصول على تنبيهات على checkins)

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

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

ملاحظة:قد ترغب في نسخة احتياطية من قاعدة البيانات تفريغ بدلا من وضعه في التحكم في الإصدار.الملفات يمكن أن تحصل بسرعة هائلة في التحكم في الإصدار ، وتسبب كامل المصدر نظام التحكم لتصبح بطيئة (أنا إذ CVS قصة رعب في هذه اللحظة).

بدأنا باستخدام "ملقم Foundation فريق".إذا كانت قاعدة البيانات متوسطة الحجم ، ثم visual studio بعض لطيفة المشروع التكامل مع المدمج في مقارنة البيانات مقارنة قاعدة البيانات إعادة بيع ديون أدوات قاعدة البيانات إطار اختبار ، وحتى البيانات أدوات الجيل.

ولكن هذا النموذج لا يصلح كبيرة جدا أو طرف ثالث قواعد البيانات (تشفير الكائنات) بشكل جيد جدا.لذا ما قمنا به هو فقط لتخزين مخصصة لدينا الكائنات.Visual Studio / ملقم foundation فريق يعمل بشكل جيد جدا لذلك.

TFS قاعدة بيانات رئيس القوس.بلوق

MS TFS الموقع

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

بعض مميزات المشروع:

  • يسمح التغييرات المخطط
  • يسمح القيمة شجرة السكان
  • يسمح اختبار منفصل إدراج البيانات على سبيل المثال.ضد التعذيب
  • يسمح خيار الاستعادة (غير آلية)
  • يحافظ على دعم SQL server و Mysql
  • لديه القدرة على استيراد قاعدة البيانات الموجودة في التحكم في الإصدار مع أمر واحد بسيط(sql server فقط ...لا تزال تعمل على الخلية)

مدونة مستضافة على مدونة جوجل.يرجى مراجعة مدونة جوجل للمزيد من المعلومات

http://code.google.com/p/databaseversioncontrol/

قبل فترة وجدت VB بس النمطية التي تستخدم DMO و VSS الكائنات للحصول على كامل db كتابتها قبالة إلى VSS.وحولتها الى VB و نشره هنا.يمكنك أن تأخذ بسهولة من VSS المكالمات واستخدام DMO الاشياء لتوليد جميع النصوص ، ومن ثم استدعاء SVN من نفس الملف الدفعي الذي يستدعي VBScript تحقق لهم ؟

ديف ي

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

الآن ما أريد أن أضيفه هو أن رأيت قبل يومين عرضا عن MS الحرم الجامعي الجديد و القادم مقابل DB الطبعة.العرض يركز تحديدا على هذا الموضوع و كنت تخرج من الماء.يجب عليك بالتأكيد تحقق من ذلك, مرافق جديدة تركز على حفظ تعريف المخطط في T-SQL scripts (يخلق) ، وقت تشغيل المحرك دلتا مقارنة نشر مخطط مع تحديد مخطط والقيام دلتا يغير والتكامل مع شفرة المصدر التكامل ، بما في ذلك MSBUILD التكامل المستمر من أجل بناء الآلي قطرات.قطرة تحتوي على ملف جديد من نوع،.dbschema الملفات التي يمكن اتخاذها نشر الموقع أداة سطر الأوامر يمكن القيام الفعلي 'دلتا' وتشغيل النشر.لدي بلوق الدخول على هذا الموضوع مع روابط VSDE شعبية ، يجب التحقق منها: http://rusanu.com/2009/05/15/version-control-and-your-database/

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

في تجربتي الحل هو ذو شقين:

  1. تحتاج إلى التعامل مع التغييرات في تطوير قاعدة البيانات التي تتم من قبل العديد من المطورين خلال التنمية.

  2. تحتاج إلى التعامل مع قاعدة البيانات ترقيات في مواقع العملاء.

من أجل التعامل مع #1 سوف تحتاج إلى بيانات قوية مهرجان دبي السينمائي الدولي/دمج أداة.أفضل أداة يجب أن تكون قادرة على أداء التلقائي دمج قدر الإمكان في حين مما يتيح لك حل غير معالج الصراعات يدويا.

أداة مثالية يجب التعامل مع دمج العمليات باستخدام 3-طريقة دمج خوارزمية أن يجلب بعين الاعتبار التغييرات التي تم إجراؤها في ملكهم قاعدة البيانات و لي قاعدة البيانات ، نسبة إلى قاعدة البيانات الخاصة بنا.

كتبت التجارية أداة توفر دليل دمج دعم قواعد البيانات سكليتي و أنا حاليا إضافة دعم 3-طريقة دمج خوارزمية سكليتي.التحقق من ذلك في http://www.sqlitecompare.com

من أجل التعامل مع #2 سوف تحتاج إلى ترقية إطار في المكان.

الفكرة الأساسية هي تطوير آلية ترقية الإطار الذي يعرف كيفية الترقية من القائمة SQL المخطط إلى أحدث SQL المخطط و يمكن بناء مسار الترقية لكل القائمة DB التثبيت.

تحقق من بلدي المادة على الموضوع http://www.codeproject.com/KB/database/sqlite_upgrade.aspx للحصول على فكرة عامة عن ما أتحدث عنه.

حظا سعيدا

Liron ليفي

تحقق من DBGhost http://www.innovartis.co.uk/.لقد استخدمت بطريقة آلية عن 2 سنوات حتى الآن ويعمل كبيرة.يتيح DB يبني أن يحدث مثل Java أو C بناء يحدث ، باستثناء البيانات الخاصة بنا.أنت تعرف ما أعنيه.

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

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

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

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

تنويه:أنا منتسبة إلى xSQL.

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