Compatibility Level Nedir Ve Nasıl Değiştirilir

Compatibility Level, bazı veritabanı davranışlarını SQL Server’ın belirtilen sürümü ile uyumlu çalışacak şekilde ayarlar. Örneğin SQL Server 2008 ve öncesindeki compatibility level’lerde PIVOT komutu Recursive CTE içinde destekleniyordu. Ama SQL Server 2008 ve üstü compatibility level’lerde Recursive CTE içinde desteklenmiyor.

 

Bir uygulama düşünün SQL Server 2008 veritabanı kullanıyor ve veritabanı içersindeki bir fonksiyonda recursive cte kullanmış. Veritabanı yöneticisi olarak veritabanını SQL Server 2008 ‘den SQL Server 2012’ye upgrade etmek istiyorsunuz. Upgrade tamamlandıktan sonra upgrade ettiğiniz yeni sürüm eski sürümün compatibility level’ini destekliyorsa compatibility level eski halde kalır. Eğer eski halde kalmasaydı PIVOT komutu RECURSIVE CTE içinde desteklenmediği için uygulama patlardı.

 

Not: Eğer yeni sürüm eski sürümün compatibility level’i ni desteklemiyorsa compatibility level yeni sürümün desteklediği en düşük compatibility level’e otomatik olarak set edilir. Bu yüzden veritabanını bir anda sql server’ın eski sürümlerinden en yeni sürümlerine upgrade yapmak sıkıntı yaratabilir. Compatibility Level upgrade edilmese bile geçiş döneminden sonra uygulamayı yeni sürümün compatibility level’i ile uyumlu çalışacak yapıya getirip compatibility level’i de yükseltmenizi tavsiye ederim. Compatibility Level’in nasıl değiştirileceğini makalenin devamında anlatacağım.

 

Hangi SQL Server versiyonunun hangi compatibility level ile çalıştığını ve hangi compatibility level’leri desteklediğini aşağıda görebilirsiniz.

 

SQL Server Versiyonu

Compatibility Level

Desteklediği Compatibility Level’ler

SQL Server 2000

80

80

SQL Server 2005

90

90,80

SQL Server 2008 ve SQL Server 2008 R2

100

100,90,80

SQL Server 2012

110

110,100,90

SQL Server 2014

120

120,110,100

SQL Server 2016

130

130,120,110,100

 

 

 

Aşağıdaki sorgu yardımıyla instance üzerindeki veritabanlarının hangi compatibility level ile çalıştığını görebilirsiniz.

 

select name,compatibility_level from sys.databases

 

 

Veritabanına sağ tıklayarak properties diyerek options sekmesinden aşağıdaki gibi compatibility level’i değiştirebilirsiniz.

Loading

Leave Your Comment