سؤال

أنا نقل التطبيق من سكل سيرفر 2008 إلى سكل سيرفر 2012 إكسبريس ، وكل شيء على ما يرام ولكن العديد من الإجراءات المخزنة يقولون لدي خطأ في بناء الجملة.لقد بحثت على الانترنت ولم يتم العثور على إجابة-هل هناك أنواع من بناء الجملة التي يتم دعمها في سكل سيرفر 2008 (اساسي) ولكن ليس في سكل سيرفر 2012 صريح?

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

المحلول

أعتقد أن هناك احتمالا واحدا ، إذا كنت تستخدم في عام 2008 وضع التوافق 2000 ، وكانت إجراءاتك المخزنة تحتوي على روابط خارجية قديمة الطراز:

SELECT o.name, c.name
FROM sys.objects AS o, sys.columns AS c
WHERE o.[object_id] *= c.[object_id];

يعمل بناء الجملة هذا في سكل سيرفر 2000 ، ولكن تم إهماله منذ ذلك الحين.في 2005 و 2008 و 2008 آر2 يمكنك استخدام بوق الحذاء إذا كنت تستخدم وضع التوافق 80.اعتبارا من سكل سيرفر 2012 ، لم يعد بإمكانك استخدام 80 وضع كومبات ، وبالتالي فإن التعليمات البرمجية أعلاه تفشل مع:

جي إس 102 ، المستوى 15 ، الدولة 1 ، السطر 3
بناء جملة غير صحيح بالقرب من'*='.

في عام 2008 ، ستتلقى رسالة الخطأ هذه بدلا من ذلك:

رسالة 4147 ، المستوى 15 ، الولاية 1 ، السطر 3
يستخدم الاستعلام غير أنسي الانضمام الخارجي المشغلين ("*=" or "=*").لتشغيل هذا الاستعلام دون تعديل, يرجى تعيين مستوى التوافق لقاعدة البيانات الحالية إلى 80 ، وذلك باستخدام خيار مستوى التوافق المحدد لتغيير قاعدة البيانات.إنه بقوة الموصى بها لإعادة كتابة الاستعلام باستخدام مشغلي الانضمام الخارجي أنسي (يسار الانضمام الخارجي ، الانضمام الخارجي الأيمن).في الإصدارات المستقبلية من سكل سيرفر, غير أنسي الانضمام المشغلين لن تكون معتمدة حتى في أوضاع التوافق مع الإصدارات السابقة.

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

ALTER DATABASE foo SET COMPATIBILITY_LEVEL = 80;

هذا يبدو وكأنه امتداد.لكن بدون بعض المعلومات الحقيقية ، يتعلق الأمر بالتخمين الوحيد الذي لدي.

نصائح أخرى

إليك قائمة ميزات إهمال في SQL Server 2012--ألق نظرة على قسم (قسم) T-SQL بشكل خاص.يمكنك أيضا استخدام SSDT (أدوات بيانات SQL Server)، وإنشاء نسخة دون اتصال من DB الخاص بك ثم قم بتعيين الإصدار الذي يستهدف SQL Server 2012 - إظهار الإخراج إظهار العديد من عدم توافق بناء الجملة بين الإصدارات.كتبت مدونة حول SSDT والتي قد تكون مفيدة هنا .

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