SQL Server 2025 Yönetici Tarafı: Ne Değişti?

Üç cümlede

Bir: Bu seri yöneticinin tarafını alıyor: motor içi, teşhis, kurtarma ve güvenlik. Geliştirici özellikleri ayrı bir eserin konusu.

İki: Değişmeyen şeyler değişenlerden fazla. Sayfa yapısı, kilitleme ve günlük mimarisi yerinde duruyor.

Üç: En sık hata: motoru yükseltip uyumluluk düzeyini eski bırakmak. Yeni iyileştirmeler o durumda kapalı kalır.

Yeni bir sürüm çıktığında yazılanların çoğu özellik listesi oluyor. Geliştirici tarafı için bu yeterli; bir yönetici içinse asıl soru başka: elimdeki sistem bu yükseltmeden sonra nasıl davranacak?

Bu seri o soruyu merkeze alıyor. On dört yazı boyunca motorun içine bakacağız: depolama, günlük, eşzamanlılık, bellek, dizin, istatistik, plan, bekleme türleri, kurtarma ve güvenlik. Kodun tamamı yerel bir kapsayıcıda gerçekten çalıştırıldı; hiçbir adımda bulut kaynağı kullanılmadı.

İçindekiler

  1. Bu seri neyi kapsıyor, neyi kapsamıyor
  2. Gerçekten değişen: uyumluluk düzeyine bağlı olanlar
  3. Yeni görünen ama değişmeyen
  4. Yükseltme sonrası kontrol listesi
  5. Serinin haritası
  6. Bu hafta yapılabilecek beş şey
  7. Sık sorulanlar
  8. Kaynaklar

Bu seri neyi kapsıyor, neyi kapsamıyor

Kapsam ayrımını baştan net koyalım, çünkü aynı sürüm hakkında iki farklı okur kitlesi var ve ikisi farklı şeyler arıyor.

Bu seride varBu seride yok
Depolama motoru, sayfa ve extent davranışıVektör veri tipi ve gömme üretimi
İşlem günlüğü ve kurtarma mekaniğiYerel JSON tipi ve JSON fonksiyonları
Kilit, latch, izolasyon ve satır sürümlemeDüzenli ifadeler ve metin fonksiyonları
tempdb, bellek ve paralellikT-SQL’den REST çağrısı ve API üretimi
Dizin, istatistik, plan ve bekleme türleriUygulama tarafı sürücü ve ORM konuları
Yedek, geri yükleme ve güvenlik işletimiÖrnek uygulama geliştirme

Sağ sütun boşlukta değil. Geliştirici tarafını ayrı bir eserde, “Yazılımcılar İçin SQL Server 2025” kitabında topladım. İki taraf birbirini besliyor: geliştirici yeni tipleri kullanıyor, yönetici o kullanımın motorda ne ürettiğini görüyor.

Serinin haritası

On dört yazı üç blok hâlinde ilerliyor. Sıra rastgele değil; her blok bir öncekinin üstüne kuruluyor. Belirtiden sebebe, sebepten sorumluluğa MOTOR İÇİ · 02-06 Depolama · günlük · eşzamanlılık kilitlenme · tempdb Soru: belirti nereden çıkıyor? Bu blok olmadan teşhis belirti tarifinden ibaret kalır SORGU BAŞARIMI · 07-12 Bellek · dizin · istatistik plan · IQP · bekleme türleri Soru: nereye müdahale edilir? Teşhis sırası bu blokta adım adım kuruluyor İŞLETME · 13-14 Yedek ve kurtarma güvenlik seti Soru: sorumluluk kimde? İddiayı kanıta çeviren maddeler burada Her yazıda bir şema, gerçekten çalıştırılmış kod ve sahadan bir not var. Rozet neyin nasıl doğrulandığını söyler. Geliştirici tarafı (vektör, JSON, düzenli ifadeler, REST) bilinçli olarak kapsam dışı; ayrı bir eserin konusu. Blokları sırayla okumak zorunlu değil, ama teşhis akışı bu sırayla kuruluyor.

Bu yazıda geçen terimler

Uyumluluk düzeyiVeritabanının hangi sürümün sorgu iyileştirici davranışını kullanacağını belirleyen ayar. Veritabanı kapsamlı yapılandırmaSunucu geneli yerine veritabanı bazında uygulanan iyileştirici ve motor ayarları. Sorgu DeposuSorgu metinlerini, planlarını ve çalışma istatistiklerini veritabanı içinde saklayan bileşen. Kardinalite tahminiİyileştiricinin bir işlemden kaç satır döneceğine dair tahmini; plan seçiminin temeli. Bekleme türüBir görevin ne beklediğini adlandıran kayıt; teşhisin en doğrudan girdisi. Kurtarma modeliGünlük kayıtlarının nasıl tutulacağını ve hangi geri dönüş seçeneklerinin mümkün olduğunu belirleyen ayar.

Gerçekten değişen: uyumluluk düzeyine bağlı olanlar

Yeni sürümde gelen iyileştirmelerin önemli bölümü otomatik devreye girmiyor; veritabanının uyumluluk düzeyine bağlı. K1.1 K1.2 Bu, yükseltmelerin en sık gözden kaçan tarafı.

Tipik sahne şöyle: motor yükseltilir, veritabanları taşınır, uyumluluk düzeyi eski değerde kalır. Sonra “yükselttik ama hiçbir fark yok” cümlesi kurulur. Doğru; çünkü yeni iyileştiricinin davranışı hâlâ kapalı.

KararSonucu
Motoru yükselt, düzeyi eski bırakEn güvenli yol; planlar değişmez, ama yeni iyileştirmeler kapalı kalır
Motoru yükselt, düzeyi yükseltYeni davranış devreye girer; bazı planlar değişir ve önce ölçülmelidir
Düzeyi yükselt, Sorgu Deposu kapalıRiskli; plan değişikliğini karşılaştıracak veriniz olmaz
Düzeyi yükselt, Sorgu Deposu açıkÖnerilen yol; öncesi ve sonrası karşılaştırılabilir

Dördüncü satır bu yazının en pratik önerisi. Sorgu Deposu’nu yükseltmeden önce açıp bir süre veri toplamak, yükseltme sonrası “bu sorgu eskiden daha hızlıydı” tartışmasını ölçüme dönüştürüyor. K6.6

Yeni görünen ama değişmeyen

Yöneticiler için asıl iyi haber bu: motorun temeli yerinde duruyor. Yirmi yıllık bilgi geçerliliğini koruyor.

  • Sayfa yapısı ve extent mantığı aynı. Sayfa boyutu, sayfa başlığı ve ayırma birimleri bildiğiniz gibi çalışıyor. K2.1
  • Kilitleme ve izolasyon düzeyleri aynı. Paylaşımlı ve dışlayıcı kilitlerin uyum matrisi, satır sürümlemenin davranışı değişmedi. K3.1
  • İşlem günlüğü mimarisi aynı. Sanal günlük dosyaları, kesme noktaları ve günlük yeniden kullanım beklemesi aynı mantıkla işliyor. K2.2
  • Bekleme türü mantığı aynı. Teşhis akışınız aynen geçerli. K6.8
  • Yedek zinciri kuralları aynı. Kurtarma modelinin belirlediği şeyler değişmedi. K2.4

Bu liste kısa görünebilir ama kapsadığı alan çok geniş. Bir yöneticinin günlük işinin büyük bölümü bu beş başlıkta geçiyor ve hiçbiri sıfırdan öğrenilmiyor.

Yükseltme sonrası kontrol listesi

Yükseltme yapıldıktan sonra sırayla bakılacaklar. Her maddenin ayrıntısı seride ilgili yazıda:

  1. Uyumluluk düzeyi ne? Bilinçli bir karar mı, yoksa öyle mi kalmış? K1.3
  2. İstatistikler güncel mi? Yükseltme sonrası istatistik güncelleme, plan kalitesini doğrudan etkiler. K5.5
  3. Sorgu Deposu açık mı ve saklama süresi yeterli mi? Karşılaştırma yapabilmek için gerekli. K6.6
  4. Plan regresyonu var mı? Süresi belirgin biçimde artan sorguları listeleyin.
  5. Bekleme profili değişti mi? Sayaçları sıfırlayıp yeni profili çıkarın. K6.8
  6. Yedek ve geri yükleme yordamınız aynen çalışıyor mu? Yükseltme sonrası bir tatbikat, en ucuz sigorta. K7.2

Dördüncü madde atlanmasın. Yükseltme sonrası ortaya çıkan başarım şikâyetlerinin çoğu birkaç sorguya bağlı oluyor. O sorguları bulmak için öncesi ve sonrasını karşılaştıran bir veriye ihtiyaç var; o veri de üçüncü maddeden geliyor.

Serinin haritası

On dört yazı üç bloğa ayrılıyor. Sıra rastgele değil; her blok bir öncekine dayanıyor.

BlokYazılarNe öğretiyor
Motor içi02-06Depolama, günlük, eşzamanlılık, kilitlenme, tempdb. Belirtilerin nereden çıktığını anlamak
Sorgu başarımı07-12Bellek, dizin, istatistik, plan, akıllı sorgu işleme, bekleme türleri. Teşhis ve müdahale
İşletme13-14Yedek ve kurtarma derinliği, güvenlik seti. Sorumluluk taşıyanın tarafı

Her yazıda şu üç şey var: bir şema, gerçekten çalıştırılmış kod ve sahadan bir not. Kodun altındaki rozet, o bloğun tam olarak nasıl doğrulandığını söylüyor; yapılmayan bir doğrulama iddia edilmiyor.

Devralınan bir ortamda ilk gün

Yeni bir ortamın sorumluluğunu aldığınızda, ne olduğunu anlamak için sırayla bakılacaklar var. Bu liste seride ilerledikçe derinleşecek; burada başlangıç hâli.

SoruNeden ilk günde
Kaç veritabanı, hangi boyutta?Bakım penceresi ve yedek süresi bununla belirlenir
Kurtarma modelleri ne?Veri kaybı toleransının teknik karşılığı
Yedek zinciri sağlam mı?En kritik risk; on üçüncü yazının konusu
Sorgu Deposu açık mı?Her teşhisin dayanacağı veri kaynağı
Uyumluluk düzeyleri ne?Plan davranışını doğrudan belirler
Kimde sysadmin var?En büyük güvenlik açığının bulunduğu yer; on dördüncü yazı
Bekleme profili neye benziyor?Sistemin karakterini tek bakışta gösterir

Bu yedi sorunun cevabı bir sayfaya sığıyor ve o sayfa, sonraki bütün çalışmanın zeminini kuruyor. Cevaplar olmadan yapılan her müdahale tahmine dayanıyor.

Sürüm desteği: teknik olmayan ama kritik bir konu

Yükseltme kararlarında sık atlanan bir boyut var: destek durumu. Yama alamayan bir sürüm, bilinen açıklara açık kalıyor ve bu, teknik bir tercih olmaktan çıkıp bir uyumluluk sorununa dönüşüyor.

DurumSonucu
Ana destek sürüyorYeni özellikler ve düzeltmeler gelir
Genişletilmiş destekYalnız güvenlik güncellemeleri
Destek bitmişYama yok; denetimde bulgu, sigortada risk

Planlama önerisi: destek bitiş tarihini yükseltme takviminin girdisi yapın, sonucu değil. Destek bittikten sonra başlayan bir yükseltme projesi, aylarca açık bir pencerede çalışmak demek.

Yükseltme yolu: kademeli ilerlemek

Bir yükseltmeyi tek bir gece olarak planlamak yaygın ama riskli. Daha güvenli sıra şöyle:

  1. Sorgu Deposu’nu açın ve bir süre veri biriktirin. En az bir tam iş döngüsünü kapsamalı: ay sonu raporları, gece işleri, yoğun günler.
  2. Motoru yükseltin, uyumluluk düzeyini değiştirmeyin. Bu adımda plan davranışı değişmez; risk düşüktür.
  3. Bir süre gözlemleyin. Motor kaynaklı bir sorun varsa burada görünür.
  4. Tek bir veritabanında düzeyi yükseltin. Tercihen en az kritik olanda.
  5. Karşılaştırın. Süresi belirgin biçimde artan sorgu var mı?
  6. Sorun çıkanları hedefli çözün. Bütün düzeyi geri almak yerine ilgili sorguya ipucu vermek genellikle daha doğru.
  7. Kalan veritabanlarına yayın.

Bu sıra daha uzun sürüyor ama her adımda geri dönüş imkânı bırakıyor. Tek gecede yapılan yükseltmelerde sorun çıktığında elinizde tek seçenek kalıyor: her şeyi geri almak.

Yükseltme öncesi envanter: tek oturumda çıkarın

Bu üç sorgu, birinci yazıdaki kontrol listesinin veri tarafını üretiyor. Çıktıyı bir yere kaydedin; yükseltme sonrası karşılaştırma yapacaksınız. T-SQL · sürüm ve uyumluluk düzeyi · motorla düzey arasında fark var mı

-- Motor surumu ve orneğin kunyesi
SELECT SERVERPROPERTY('ProductVersion') AS surum,
       SERVERPROPERTY('ProductLevel')   AS surum_duzeyi,
       SERVERPROPERTY('Edition')        AS sunum;

-- Veritabani bazinda uyumluluk duzeyi.
-- Motor yeni ama duzey eskiyse, yeni iyilestirmelerin cogu KAPALIDIR.
SELECT name AS veritabani,
       compatibility_level AS uyumluluk_duzeyi,
       recovery_model_desc AS kurtarma_modeli,
       state_desc AS durum,
       is_read_committed_snapshot_on AS rcsi_acik,
       is_query_store_on AS sorgu_deposu_acik
FROM sys.databases
ORDER BY name;

ÇalıştırıldıSQL Server 2025 üzerinde gerçekten çalıştırılarak doğrulandı (yerel Docker; bulut kaynağı yok). T-SQL · veritabanı kapsamlı yapılandırma · hangi ayar varsayılandan sapmış

-- Varsayilandan sapan ayarlari gormek, devralinan bir ortamda
-- ilk yapilacak islerden biridir. Sapma her zaman yanlis degildir;
-- ama gerekcesi bilinmelidir.
SELECT configuration_id, name, value, value_for_secondary, is_value_default
FROM sys.database_scoped_configurations
ORDER BY name;

ÇalıştırıldıSQL Server 2025 üzerinde gerçekten çalıştırılarak doğrulandı (yerel Docker; bulut kaynağı yok). T-SQL · bekleme profilinin taban ölçümü · yükseltme öncesi fotoğraf

-- Iyi huylu turler elenmis bekleme profili.
-- Bu ciktiyi yukseltme oncesi kaydedin; sonrasinda karsilastirin.
SELECT TOP (15)
       wait_type,
       waiting_tasks_count                              AS bekleyen_gorev,
       wait_time_ms                                     AS toplam_ms,
       wait_time_ms - signal_wait_time_ms               AS kaynak_bekleme_ms,
       signal_wait_time_ms                              AS sinyal_bekleme_ms
FROM sys.dm_os_wait_stats
WHERE waiting_tasks_count > 0
  AND wait_type NOT IN (
      'CLR_SEMAPHORE','LAZYWRITER_SLEEP','RESOURCE_QUEUE','SLEEP_TASK',
      'SLEEP_SYSTEMTASK','SQLTRACE_BUFFER_FLUSH','WAITFOR','LOGMGR_QUEUE',
      'CHECKPOINT_QUEUE','REQUEST_FOR_DEADLOCK_SEARCH','XE_TIMER_EVENT',
      'BROKER_TO_FLUSH','BROKER_TASK_STOP','CLR_MANUAL_EVENT','CLR_AUTO_EVENT',
      'DISPATCHER_QUEUE_SEMAPHORE','FT_IFTS_SCHEDULER_IDLE_WAIT',
      'XE_DISPATCHER_WAIT','XE_DISPATCHER_JOIN','SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
      'DIRTY_PAGE_POLL','SP_SERVER_DIAGNOSTICS_SLEEP','HADR_FILESTREAM_IOMGR_IOCOMPLETION',
      'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP','QDS_ASYNC_QUEUE','QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP')
ORDER BY wait_time_ms DESC;

ÇalıştırıldıSQL Server 2025 üzerinde gerçekten çalıştırılarak doğrulandı (yerel Docker; bulut kaynağı yok).

Sahadan not · yükseltip düzeyi unutmak

Yükseltme sonrası en sık duyduğumuz cümle şu: “yeni sürüme geçtik ama hiçbir fark yok.” Neredeyse her seferinde aynı sebep çıkıyor: motor yükseltilmiş, veritabanları taşınmış, uyumluluk düzeyi eski değerde bırakılmış. Yani yeni iyileştiricinin davranışı hiç devreye girmemiş.

Bu bir hata değil; göç sırasında bilinçli olarak yapılan güvenli bir tercih. Sorun, o tercihin geçici olması gerektiğinin unutulması. Yükseltme planına, düzeyin ne zaman ve hangi ölçüme bakılarak yükseltileceğini ayrı bir madde olarak yazın. Aksi hâlde ödediğiniz lisans bedelinin karşılığını almıyorsunuz.

Bu hafta yapılabilecek beş şey

  1. Veritabanlarınızın uyumluluk düzeyini listeleyin. Motorla düzey arasında fark varsa, bunun bilinçli bir karar olup olmadığını sorun.
  2. Sorgu Deposu’nun açık olup olmadığını ve saklama süresini kontrol edin; yükseltme kararının ön koşulu bu.
  3. Bekleme profilinizin bugünkü hâlini kaydedin. Karşılaştırma yapabilmek için bir taban ölçüme ihtiyacınız var.
  4. En son ne zaman geri yükleme tatbikatı yaptığınızı yazın. Cevap yoksa, o tatbikatı takvime alın.
  5. Sürüm destek durumunuzu kontrol edin. Yama alamayan bir sürüm, bilinen açıklara açık kalır.

Sık sorulanlar

Bu seri kitabın tekrarı mı?

Hayır, kapsamları ayrı. Kitap geliştirici tarafını anlatıyor: vektör, JSON, düzenli ifadeler, REST. Bu seri yönetici tarafını alıyor: motor içi, teşhis, kurtarma ve güvenlik. İkisi birbirini tamamlıyor.

Uyumluluk düzeyini hemen yükseltmeli miyim?

Sorgu Deposu ile bir taban ölçüm almadan yükseltmeyin. Yükselttikten sonra plan regresyonu kontrolü yapın; sorun çıkarsa düzeyi geri almak ya da tek tek ipucu vermek mümkün.

Eski sürümdeyim, bu seri işime yarar mı?

Büyük ölçüde evet. Motorun temeli sürümler arasında değişmiyor; seride anlatılan depolama, günlük, kilitleme ve teşhis mantığı eski sürümlerde de geçerli. Sürüme özgü noktaları ayrıca işaretliyorum.

Kodları kendi ortamımda çalıştırabilir miyim?

Evet, hepsi salt okunur teşhis sorguları ya da açıkça belirtilmiş yapılandırma komutları. Kodun tamamı yayın öncesi yerel bir kapsayıcıda çalıştırıldı ve her bloğun altında ne şekilde doğrulandığı yazıyor.

Bulut tarafını da anlatacak mısınız?

Bulut tarafı ayrı bir seride duruyor. Bu seri bilinçli olarak kutu sürüme odaklanıyor; kavramların çoğu iki tarafta da aynı olduğu için birbirini besliyorlar.

Neden bekleme türleri için ayrı bir yazı var?

Çünkü teşhiste en çok kullanılan ve en çok yanlış okunan veri o. Bir sözlük hâline getirmek, her teşhiste sıfırdan arama yapmayı ortadan kaldırıyor.

Kaynaklar

Yazıdaki her olgusal iddianın yanındaki kod bu listeye denk gelir. Resmî belge, üreticinin kendi dokümanıdır: bir yeteneğin var olduğunu kanıtlar, o yeteneğin sizin ortamınızda ne kadar iyi çalıştığını kanıtlamaz. Bir rakam buradaki belgede farklıysa belge doğrudur, yazı eskimiştir; bize yazın, düzeltelim.

  1. K1.1 · SQL Server 2025’te neler yeni Resmî belge
    https://learn.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2025
  2. K1.2 · ALTER DATABASE SCOPED CONFIGURATION Resmî belge
    https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-database-scoped-configuration-transact-sql
  3. K6.6 · Sorgu Deposu Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store
  4. K2.1 · Sayfa ve extent mimari rehberi Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/pages-and-extents-architecture-guide
  5. K3.1 · İşlem kilitleme ve satır sürümleme rehberi Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-locking-and-row-versioning-guide
  6. K2.2 · İşlem günlüğü mimari rehberi Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide
  7. K6.8 · sys.dm_os_wait_stats Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-wait-stats-transact-sql
  8. K2.4 · Kurtarma modelleri Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/recovery-models-sql-server
  9. K1.3 · sys.databases Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql
  10. K5.5 · İstatistikler Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/statistics/statistics
  11. K7.2 · Geri yükleme ve kurtarma Resmî belge
    https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-and-recovery-overview-sql-server

Çıkar beyanı. Bu yazıyı yazan Çağlar Özenç, DMC Bilgi Teknolojileri kurucusudur ve Microsoft Data Platform MVP unvanını taşır. DMC, SQL Server tarafında sağlık değerlendirmesi, başarım ayarlama ve yönetilen işletme hizmeti satar. Yani bu konuda tarafsız değil, taraflı ve bunu açıkça yazıyoruz. Yazıdaki her olgusal iddia Microsoft’un kendi belgesine dayanır ve yazının sonundaki kaynak listesinde kodludur. Aksini gösteren bir ölçümünüz varsa yazın, düzeltiriz.

Leave a Reply

Your email address will not be published. Required fields are marked *