سلام
نمیتوان از نسخه های قبل از 405 سیستم به همراه نسخههای 2012
و 2014 از SQL Server استفاده کرد. دلیل این وضعیت سیاست backward
compatibility در SQL Server است و این مشکل در نسخه 405 رفع شده است ، اما نکات مهمی
وجود دارند که در این مطلب شرح خواهیم داد.
سیر تکاملی SQL Server
SQL
Server تا پیش از نسخه 7 یک محصول بومی Microsoft نبوده است و عملا محصول
یکی از شرکتهایی بوده که MS آنرا خریداری کرده بود. نسخه 7 این نرمافزار
از ابتدا توسط MS تولید میشود و به همین دلیل SQL Server از نسخه 7 به بعد
نسبت به نسخههای پیش از آن یک نرمافزار کاملا جدید به حساب میآید (نه
نسخه جدیدی از نرمافزار قبلی). شبیه این وضعیت در سیستمهای DOS ما و
مقایسه آنها با سیستم XP هم قابل تشخیص است.
از نسل جدید تا به حال نسخههای زیر از SQL Server ارائه شدهاند: 7، 2000، 2005، 2008، 2008R2، نسخه 2012 و نسخه 2014.
هر
یک از این نسخهها Editionهای متعددی دارند - از Desktop یا Express تا
Enterprise و جدیدا Cloud. اکثر این ویرایشها به صورت 32 یا 64 بیتی تولید
شدهاند. تفاوت این ویرایشها اولا در سیستم عاملی است که باید برای اجرای
آنها استفاده شود (سرور یا کلاینت یا Home یا Std) و ثانیا در حجم عملیاتی
است که میتوانند پردازش کنند (اندازه پایگاهها و تعداد کاربران همزمان) و
ثالثا در برخی امکانات جانبی مثل Replication یا Analysis Services.
نسخهای که ما پشتیبانی میکنیم
در
زمانی که ما شروع به توسعه سیستم کرده بودیم، نسخه 2000 از SQL Server
ارائه شده بود و ما همان نسخه را به عنوان پایه مورد استفاده قرار دادیم.
به دلایلی در این سالها همچنان نسخه 2000 را به عنوان پایه لحاظ کردهایم
به این معنی که سیستم ما در زمان اتصال به SQL Server انتظار یک سرور نسخه
2000 به بالا را دارد. همچنین روش تعریف جدولها و تریگرها و سایر کدهایی
که در پایگاه اطلاعاتی پیاده کردهایم مطابق تعریف 2000 بوده است که البته
همین تعریف در همه نسخههای بعدی هم کماکان برقرار است.
به دلایلی
تغییر نسخه پایه (مثلا از 2000 به 2008) برای سیستم ما عاقلانه نیست: اولا
تعداد زیادی از مشتریان ما در حال حاضر از 2000 استفاده میکنند. تغییر
نسخه پایه سیستم ما به این معنی است که این مشتریان باید SQL Server خود را
upgrade نمایند. این وضعیت البته به خودی خود اشکالی ندارد اما باید توجیه
کافی برای این زحمت (که بیشتر آن برعهده همکاران من در بخش پشتیبانی شرکت
خواهد بود) داشته باشیم.
ثانیا قسمت عمدهای از امکانات نسخههای
جدید (در زمینه XML یا dot Net یا Cloud) برای ما فاقد کاربرد است. البته
امکانات بسیار جالبی در مورد جداول Sparse در 2008R2 وجود دارد که اگر در
سیستم دستمزد از آنها استفاده کنیم حجم پایگاهها را بسیار کاهش میدهد.
اما الف) این امکانات برای ما حیاتی نیستند و ب) در صورتی که در آینده با
اندازه پایگاههای دارای دستمزد مشکل داشته باشیم میتوانیم این امکانات را
مثلا در Admin پیاده کنیم و در زمان استفاده از آنها کنترل کنیم که سرور
حداقل 2008R2 باشد - هر چند با این وضعیت هارد و سرورهایی که مشتریان از
آنها استفاده میکنند و درخواستهایی که برای اضافه کردن تصویر به دادههای
ما از طرف کاربران ارائه میشود نگرانی ما در مورد اندازه پایگاهها مثل
نگرانیهای دایه مهربانتر از مادر است!
ثالثا SQL Serverهای جدید
نصب بسیار زمانبر و پیچیدهای دارند. هنوز بهترین گزینه برای برپاسازی
سیستم در بسیاری از موارد همان SQL 2000 DE-SP4 است که در زمان کمتر از یک
دقیقه نصب میشود و هیچ دردسری هم ندارد.
خوشبختانه امکاناتی که ما
استفاده میکنیم همگی در همه نسخههای SQL Server از 2000
تا 2014 پشتیبانی میشوند و نیازی هم به تغییر نسخه پایه (تا امروز) پیش
نیامده است.
سیاست Microsoft در پشتیانی نسخههای قبلی
همانطور
که گفتم، نسخههای 2000 تا 2014 با هم Compatible اند - یعنی اگر یک
پایگاه را با نسخه 2000 درست کرده باشیم و در آن کد نوشته باشیم میتوان از
همان پایگاه در نسخههای بعدی (تا 2014 که فعلا وجود دارد) استفاده کرد.
البته برخی تفاوتها وجود دارند که تا به حال (پیش از 2012) ما را آزار
نداده بودند و اینک در 2012 باید به آنها بپردازیم که در بندهای بعدی شرح
خواهیم داد. نکته قابل توجه اما این است که هسته اصلی نسخههای متفاوت SQL
Server یکسان است.
اما سیاست Microsoft در پشتیبانی محصولاتش چنین
است که مستقل از اینکه چند سال از ارائه محصول گذشته باشد، پشتیبانی از آن
فقط تا ارائه 3 نسخه بعدی ادامه پیدا میکند. مثلا در زمان ارائه نسخه 2008
هنوز همه نسخههای 7 و 2000 و 2005 پشتیبانی میشدند و در زمان ارائه نسخه
2008R2 دیگر پشتیبانی نسخه 7 انجام نمیشد - البته نسخه 2000 کماکان
پشتیبانی میشد.
این عدم پشتیبانی به این معنی است که 1/ update و
service pack برای نسخههای قدیمی ارائه نمیشود. 2/ پشتیبان تهیه شده از
نسخه قبلی بازیابی نمیشود. 3/ فایلهای حاوی پایگاههایی که پیش از این به
سرور نسخه قبلی مربوط بودهاند قابل معرفی به نسخه جدید نیستند.
البته
این سیاست برای Microsoft فقط در مورد اول فایده مستقیم دارد؛ در دو مورد
بعدی صرفا به این منظور اعمال میشود که کاربران مجبور به خرید نسخههای
جدید شوند. وگرنه در داخل سیستم هیچ مشکلی وجود ندارد و backward
compatibilty تا میزان زیادی (حداقل تا نسخه 2014) دیده میشود.
Local DB
SQL
2012 دارای یک ویرایش جدید به نام Local DB است که حتی از Desktop Edition
یا Express هم کوچکتر است. این ویرایش برای کمک به برنامهنویسان تولید
شده است. با استفاده از آن میتوان بدون نیاز به نصب مجدد SQL Server به
تعداد دلخواه instance با اسامی دلخواه ایجاد کرد. با توجه به کوچک بودن
این ویرایش، برای تولید برنامههای کوچک بدون نیاز به سرور بسیار مناسب
است. احتمالا در آینده ویرایشهای مناسب برای Windows Phone و RT (مناسب
برای Tabletها) هم مبتنی بر همین ویرایش تولید خواهند شد.
متاسفانه
این ویرایش به صورت Service در رایانه سرور نصب نمیشود. استفاده از
default instance بدون ذکر نام رایانه و instance هم در آن میسر نیست. به
همین دلیل استفاده از آن برای معماری سیستم ما میسر نیست و ما نمیتوانیم
آنرا پشتیبانی کنیم - ضمن اینکه برای اتصال به آن نمیتوان از MDACهای
استاندارد مایکروسافت که در همه Windowsها وجود دارد استفاده کرد و حتما
لازم است تا نرمافزارهای ارتباط به سرور اختصاصی نصب شود. این وضعیت، به
خصوص در هدیه برای ما بسیار نامطلوب است.