# SQL Server Versiyon Yükseltme Sürecinde Değişiklik Yönetimi

SQL Server 2016'dan 2022'ye geçiş. Kulağa tek seferlik bir operasyon gibi gelir. Ama yanlış yönetildiğinde aylarca süren bir sorun kaynağına dönüşebilir.

* * *

## Neden Bu Kadar Karmaşık?

Versiyon yükseltme tek bir değişiklik değil, yüzlerce potansiyel değişikliğin tetikleyicisi.

Yeni versiyonda deprecated olan özellikler var mı? Mevcut stored procedure'ler yeni versiyonla uyumlu mu? Uygulama katmanı yeni SQL Server sürücüsünü destekliyor mu? Üçüncü taraf araçlar yeni versiyonla çalışıyor mu?

Bu soruların cevabını bilmeden yükseltme yapmak, gözleri kapalı yürümek gibi.

* * *

## Yükseltme Öncesi Yapılması Gerekenler

**Mevcut durumu belgeleyin**

Yükseltme öncesinde veritabanı şemasının tam bir anlık görüntüsünü alın. Tüm nesneler, yetki yapısı, job'lar, linked server'lar. Bu belge yükseltme sonrası karşılaştırma için şart.

**Deprecated özellikleri tespit edin**

sql

```sql
SELECT
    instance_name AS OzellikAdi,
    cntr_value AS KullanımSayisi
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Deprecated%'
    AND cntr_value > 0
ORDER BY cntr_value DESC;
```

Bu sorgu mevcut veritabanında kullanılan ama yeni versiyonda kaldırılmış özellikleri listeler. Her biri ayrı bir değişiklik kalemi.

**Uyumluluk seviyesini kademe kademe yükseltin**

Direkt SQL Server 2016'dan 2022'ye geçmek yerine uyumluluk seviyesini kademeli yükseltmek riskleri küçük parçalara böler.

sql

```sql
-- Mevcut uyumluluk seviyesini kontrol et
SELECT name, compatibility_level FROM sys.databases;

-- Uyumluluk seviyesini adım adım yükselt
ALTER DATABASE VeritabaniAdi SET COMPATIBILITY_LEVEL = 140; -- SQL 2017
-- Test et
ALTER DATABASE VeritabaniAdi SET COMPATIBILITY_LEVEL = 150; -- SQL 2019
-- Test et
ALTER DATABASE VeritabaniAdi SET COMPATIBILITY_LEVEL = 160; -- SQL 2022
```

* * *

## Test Stratejisi

Versiyon yükseltme testi üç katmanda yapılmalı.

**Fonksiyonel test:** Tüm stored procedure'ler çalışıyor mu, beklenen sonuçları veriyor mu?

**Performans testi:** Yeni Query Optimizer bazen farklı sorgu planları seçer. Yükseltme sonrası kritik sorguların execution plan'larını karşılaştırın.

**Entegrasyon testi:** Uygulamalar, raporlar, üçüncü taraf araçlar yeni versiyonla sorunsuz çalışıyor mu?

* * *

## Rollback Planı

Versiyon yükseltmesi geri alınamaz bir operasyondur. Bir kez yükseltilince downgrade yapılamaz, sadece backup'tan geri dönülebilir.

Bu nedenle yükseltme öncesinde tam backup alınmalı ve o backup'tan restore test edilmiş olmalı. "Gerekirse geri döneriz" değil, "şu kadar sürede geri dönebiliriz" şeklinde net bir plan olmalı.

* * *

## Sonuç

Versiyon yükseltme değişiklik yönetiminin en karmaşık senaryolarından biri. Belgeleme, kademeli geçiş ve kapsamlı test bu karmaşıklığı yönetilebilir hale getirir.

Detaylı bilgi için: [sqlchangeguard.com](http://sqlchangeguard.com)
