Yunus ALKIŞ
Veri Tabanı Yöneticisi
T-SQL Komut Dosyasını Kullanarak SQL Server Veritabanı Uyumluluk Düzeylerini Yükseltme

SQL Server veritabanları, farklı uyumluluk seviyelerinde çalışabilirler. Bu uyumluluk seviyeleri, SQL Server sürümüne bağlı olarak değişir ve bazen eski uygulamaların uyumluluğunu sağlamak için kullanışlıdır. Bu yazıda, SQL Server veritabanlarının uyumluluk seviyelerini kontrol etmek ve gerektiğinde ayarlamak için kullanabileceğiniz bir yazı sunacağız.
SQL Server’da, her veritabanı belirli bir uyumluluk seviyesinde çalışır. Bu seviye, SQL Server sürümüne bağlı olarak belirlenir. Farklı uyumluluk seviyeleri, SQL Server veritabanları için kullanılabilir ve bu seviyeler, uygulamaların veritabanı ile uyumlu bir şekilde çalışmasını sağlamak için kullanılır.
Her veritabanı, bu uyumluluk seviyelerinden birine sahip olabilir ve bu seviyeler, veritabanının SQL Server sürümü ile uyumlu olmasını sağlar.
Aşağıdaki tablo, SQL Server sürümüne göre desteklenen veritabanı uyumluluk seviyelerini göstermektedir:
+--------------------+----------------+---------------------+-----------------------------------+
| Version | Engine Version | Compatibility Level | Compatibility Levels |
+--------------------+----------------+---------------------+-----------------------------------+
| SQL Server 2022 | 16 | 160 | 160, 150, 140, 130, 120, 110, 100 |
| SQL Server 2019 | 15 | 150 | 150, 140, 130, 120, 110, 100 |
| SQL Server 2017 | 14 | 140 | 140, 130, 120, 110, 100 |
| SQL Server 2016 | 13 | 130 | 130, 120, 110, 100 |
| SQL Server 2014 | 12 | 120 | 120, 110, 100 |
| SQL Server 2012 | 11 | 110 | 110, 100, 90 |
| SQL Server 2008 R2 | 10.5 | 100 | 100, 90, 80 |
| SQL Server 2008 | 10 | 100 | 100, 90, 80 |
| SQL Server 2005 | 9 | 90 | 90, 80 |
| SQL Server 2000 | 8 | 80 | 80 |
+--------------------+----------------+---------------------+-----------------------------------+
-- SQL Server sürümüne göre uygun veritabanı uyumluluk seviyelerini ayarlamak için kullanılır.
-- Önerilen uyumluluk seviyesini kullanmayan veritabanlarını bulur ve uygun seviyeye getirmek için bir sorgu oluşturur.
-- Önerilen uyumluluk seviyesini belirlemek için 'master' veritabanından alınır.
DECLARE @Recommended_Compatibility_Level VARCHAR(3) = (SELECT compatibility_level FROM sys.databases WHERE name = 'master')
-- 1. Yöntem
-- Instance_Name | Database_Name | State | Compatibility_Level | Recommended_Compatibility_Level | Query
SELECT
SERVERPROPERTY('SERVERNAME') AS [Instance_Name]
,name AS [Database_Name]
,state_desc AS [State]
,'SQL Server ' +
CASE compatibility_level
WHEN 80 THEN '2000 (8.x) (80)'
WHEN 90 THEN '2005 (9.x) (90)'
WHEN 100 THEN '2008 (100)'
WHEN 110 THEN '2012 (110)'
WHEN 120 THEN '2014 (120)'
WHEN 130 THEN '2016 (130)'
WHEN 140 THEN '2017 (140)'
WHEN 150 THEN '2019 (150)'
WHEN 160 THEN '2022 (160)'
ELSE 'Version Not Found'
END AS [Compatibility_Level]
,'SQL Server (' + @Recommended_Compatibility_Level + ')' AS [Recommended_Compatibility_Level]
,'USE [master] ALTER DATABASE [' + name + '] SET COMPATIBILITY_LEVEL = ' + @Recommended_Compatibility_Level AS [Query]
FROM sys.databases
WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb') -- Sistem veritabanlarını hariç tutar.
AND compatibility_level != @Recommended_Compatibility_Level -- Önerilen değer dışındakilerini hariç tutar.
Yukarıdaki T-SQL sorgusunun örnek bir çıktısı aşağıdaki gibi olabilir:
+---------------+----------------+--------+-----------------------+---------------------------------+----------------------------------------------------------------------------+
| Instance_Name | Database_Name | State | Compatibility_Level | Recommended_Compatibility_Level | Query |
+---------------+----------------+--------+-----------------------+---------------------------------+----------------------------------------------------------------------------+
| SQLSERVER01 | AdventureWorks | ONLINE | SQL Server 2016 (130) | SQL Server 2022 (160) | USE [master] ALTER DATABASE [AdventureWorks] SET COMPATIBILITY_LEVEL = 160 |
| SQLSERVER01 | Northwind | ONLINE | SQL Server 2014 (120) | SQL Server 2022 (160) | USE [master] ALTER DATABASE [Northwind] SET COMPATIBILITY_LEVEL = 160 |
| SQLSERVER01 | TestDB | ONLINE | SQL Server 2017 (140) | SQL Server 2022 (160) | USE [master] ALTER DATABASE [TestDB] SET COMPATIBILITY_LEVEL = 160 |
+---------------+----------------+--------+-----------------------+---------------------------------+----------------------------------------------------------------------------+
Bu sorgu, her bir veritabanının mevcut uyumluluk seviyesini, önerilen uyumluluk seviyesini ve gerekirse uyumluluk seviyesini ayarlamak için kullanabileceğiniz SQL sorgusunu verir.
Bu blog yazısında, SQL Server veritabanlarının uyumluluk seviyelerini kontrol etme ve gerektiğinde ayarlama işleminin nasıl yapılabileceğini öğrendik. Uygun uyumluluk seviyeleri kullanarak, uygulamalarınızın sorunsuz bir şekilde çalışmasını sağlayabilir ve eski uygulamaları güncel tutabilirsiniz. Uyumluluk seviyelerini düzenli olarak kontrol etmek, veritabanınızın performansını ve güvenilirliğini artırabilir.
Bunu paylaş:
- Facebook'ta paylaşmak için tıklayın (Yeni pencerede açılır)
- X'te paylaşmak için tıklayın (Yeni pencerede açılır)
- Linkedln üzerinden paylaşmak için tıklayın (Yeni pencerede açılır)
- WhatsApp'ta paylaşmak için tıklayın (Yeni pencerede açılır)
- Telegram'da paylaşmak için tıklayın (Yeni pencerede açılır)
- Arkadaşınıza e-posta ile bağlantı göndermek için tıklayın (Yeni pencerede açılır)