۱۳۸۸/۰۲/۲۲

تنظيم درجه سازگاري يك ديتابيس اس كيوال سرور


اس كيوال سرور خود را به 2008 ارتقاء داده‌ايد؟ آيا مي‌دانيد كه مجاز هستيد از تمامي امكانات جديد آن در ديتابيس‌هاي موجود خود استفاده كنيد يا خير؟
به همين منظور ابتدا كوئري زير را اجرا نمائيد:
Use master;
SELECT name, compatibility_level FROM sys.databases
ليست ديتابيس‌هاي موجود به همراه درجه سازگاري آن‌ها نمايش داده مي‌شود. هر كدام كه درجه سازگاري مساوي با 100 نداشت يعني مجاز به استفاده از تمامي امكانات سرور جديد نيست و با آن همانند يك ديتابيس قديمي بر اساس درجه سازگاري آن رفتار مي‌شود.
تفسير اين اعداد مطابق اطلاعات زير است:
60 = SQL Server 6.0
65 = SQL Server 6.5
70 = SQL Server 7.0
80 = SQL Server 2000
90 = SQL Server 2005
100= SQL Server 2008
براي تغيير اين درجه سازگاري مي‌توان از يكي از دستورات T-SQL زير استفاده كرد:

-- Old way:
EXEC sp_dbcmptlevel 'AdventureWorks', 100

-- New way:
ALTER DATABASE 'AdventureWorks' SET COMPATIBILITY_LEVEL = 100 ;
كه روش اول منسوخ شده در نظر گرفته شده و روش دوم پيشنهاد مي‌شود.
براي مثال كوئري زير عبارات Alter مورد نظر را جهت ارتقاء ديتابيس‌هاي موجود كه درجه سازگاري آن‌ها 100 نيست (هنوز به اس كيوال سرور 2008 ارتقاء پيدا نكرده‌اند)، توليد مي‌كند:

SELECT 'ALTER DATABASE ' + NAME + ' SET COMPATIBILITY_LEVEL = 100;' TSQL
FROM sys.databases
WHERE compatibility_level <> 100