it-swarm.asia

الرجوع إلى إصدار أقدم من SQL Server 2008 إلى 2005

ملفات قاعدة البيانات التي تم إنشاؤها باستخدام SQL 2008 غير متوافقة مع 2005. هل يوجد حل بديل؟

32
Sevki

لا أدوات الطرف الثالث اللازمة. أعطانا SQL Server 2008 Management Studio أداة قوية جدًا لتحويل قاعدة البيانات إلى أسفل لأنها أضافت خيار "بيانات البرنامج النصي" إلى معالج "قاعدة بيانات البرنامج النصي".

فقط انقر بزر الماوس الأيمن فوق قاعدة البيانات في SQL2008 SSMS ، وانتقل إلى المهام ، ثم "إنشاء البرامج النصية"

تجول في المعالج ، تأكد من اختيار "True" لـ "Script Data" ضمن خيارات الجدول/العرض. اختر جميع الكائنات ، ثم قم بتشغيل البرنامج النصي الذي يقوم بإنشائه على خادم 2005. (يرجى الانتباه إلى أن البرنامج النصي الذي تم إنشاؤه يمكن أن يكون ضخم إذا كانت قاعدة البيانات الأصلية كبيرة جدًا!)

لاحظ أنه يمكنك حتى تشغيل المعالج على خادم SQL2005 لتحويل قاعدة بيانات SQL2005 إلى SQL2000 (ستحتاج إلى أدوات 2008 مثبتة على محطة العمل الخاصة بك ، بالطبع).

16
BradC

يمكنك BCP البيانات من مثيل SQL Server إلى مثيل آخر. ستكون هذه أسرع طريقة لنسخ البيانات من إصدار إلى آخر. اعتمادًا على حجم البيانات ، قد يستغرق الأمر وقتًا طويلاً.

16
Jeremiah Peschka

لا توجد طريقة مباشرة ، أعلم عنها ، لخفض إصدار قاعدة بيانات من تنسيق 2008 إلى تنسيق 2005 للأسف.

الطريقة التي قمت بها بذلك في الماضي (في الواقع مع الإصدارات القديمة من خادم SQL ، ولكن العملية ستكون نفسها) هي:

  1. قم باستعادة قاعدة البيانات على مثيل SQL2008 إذا لم يكن قد تم بالفعل
  2. بناء قاعدة بيانات فارغة مع الهياكل الصحيحة (الجداول ، الفهارس ، القيود ، طرق العرض ، procs ، المشغلات ، ...) على مثيل SQL2005. نأمل أن تتمكن من القيام بذلك من إجراء الإنشاء الحالي و/أو التعليمات البرمجية المصدر ، ولكن إذا لم يكن الأمر كذلك ، فيمكنك استخدام SQL Server Manager لإنشاء برامج نصية لكل شيء في 2005 DB وتشغيل النتيجة على نسخة فارغة في مثيل 2008.
  3. تأكد من أن الحالتين يمكنهما رؤية بعضهما البعض (أي أنه لا توجد جدران حماية تمنع الاتصالات إذا كانت المثيلات موجودة على أجهزة مختلفة) واربطهما باستخدام sp_addlinkedserver .
  4. انسخ جميع البيانات من قاعدة بيانات إلى أخرى. إذا لم تكن هناك قيود رئيسية أجنبية ومشكلات مماثلة في المشغلات للقلق ، يمكنك فقط ربط قواعد البيانات معًا والمؤشر من خلال قائمة الجداول (تحديدها من sys.objects) وتشغيلها
    INSERT destinationserver.destinationdb.schema.table SELECT * FROM sourcedb.schema.table
    (أو INSERT schema.table SELECT * FROM sourceserver.sourcedb.schema.table إذا ربطت المثيلات بهذه الطريقة)
    لكل طاولة. إذا كان لديك قيود على فرض التناسق بين الجداول ، فستحتاج بالطبع إلى أن تكون أكثر ذكاءً قليلاً فيما يتعلق بترتيب هذه العمليات ، خاصة إذا كانت لديك قيود دورية مثل جدول مع قيد قائم على نفسه (واحد يحمل التسلسل الهرمي البيانات ، كمثال محتمل).

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

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

15
David Spillett

واجهت موقفًا مشابهًا واستخدمت نشر قاعدة البيانات Wizard لمخطط البرنامج النصي وبيانات SQL Server 2005 من قاعدة بيانات SQL Server 2008.

SQL Server Hosting Web Service (and Toolkit)

معالج نشر قاعدة البيانات

7
CoderHawk

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

حظا طيبا وفقك الله!

1
Mbongeni