Tag Archives: sql server 2022

SQL Server 2022 Auto-Drop Özelliği

SQL veri tabanında kullanılan istatistikler oldukça önemli bir yere sahiptir.

Tablolarda verilerin yüzde kaç oranında yer aldığını belirten istatistikler index ler ile birlikte otomatik oluşurlar.

SQL Server 2022 öncesinde elle oluşturulan istatistikler bazen sorunlara sebep oluyordu. Şema değişikleri de bunlardan biri.

Tablo ya da kolonların silinmesi durumunda şema değişeceğinden elle oluşturduğunuz istatistik silinmeyecektir ve dolayısıyla hatalara sebep olur ve silmek için ekstra işlem yapmak gerekir.

SQL Server 2022 de gelen Auto-Drop özelliği istatistiğin bağlı olduğu nesne silinirse istatistiğinde otomatik olarak silinmesini sağlar.

Tablomda auto-drop özelliği ile bir istatistik oluşturuyorum.

CREATE STATISTICS Personel
ON  Kullanici (Ad, Soyad, Sicilno)
WITH AUTO_DROP = ON;

Sorgu ile kontrol ettiğimde elle oluşturduğum istatistik için auto-drop özelliğinin açık olduğunu görmekteyim. Index den gelen istatistikte ise kapalıdır.

USE ortacdb;
GO
SELECT s.name AS statistics_name
      ,c.name AS column_name
      ,sc.stats_column_id
      ,s.auto_created
      ,s.user_created   
      ,s.auto_drop

FROM sys.stats AS s
INNER JOIN sys.stats_columns AS sc
    ON s.object_id = sc.object_id AND s.stats_id = sc.stats_id
INNER  JOIN sys.columns AS c
    ON sc.object_id = c.object_id AND c.column_id = sc.column_id
 
WHERE s.object_id = OBJECT_ID('dbo.Kullanici');

Oluşturduğum istatistiğe bağlı olan bir kolonu siliyorum.

İstatistik de silinmiş oldu.

Auto-drop özelliğini açmadan kolonu silseydim hata ile karışılacaktım.

Auto-Drop özelliği sonradan açılıp kapatılabilir.

UPDATE STATISTICS  [dbo].[Kullanici]  [Peronel] WITH AUTO_DROP = ON;

Ya da

UPDATE STATISTICS  [dbo].[Kullanici]  [Peronel] WITH AUTO_DROP = OFF;