Auto Close nedir? #DatabaseOptions

Automatic kategorisi altındaki ayarlardan olan Auto Close’u inceleyeceğim.

Auto Close nedir?

Veritabanı üzerindeki son kullanıcı bağlantısını kapattığında, veritabanının kapatılarak sunucu üzerindeki (veritabanının kullandığı) kaynakların kullanılabilir olmasını sağlamaktadır. Veritabanı kapatıldığında, bir sonraki kullanıcının erişimi daha uzun sürer.

Seçenekler

  • True
  • False

Best Practice

Auto Close = False

Auto Close ayarını nasıl düzenleyebilirim?

  • T-SQL ile
--Ayarı aktif etmek için
ALTER DATABASE [DatabaseName] SET AUTO_CLOSE ON WITH NO_WAIT
GO

--Ayarı pasif etmek için
ALTER DATABASE [DatabaseName] SET AUTO_CLOSE OFF WITH NO_WAIT
GO
  • Management Studio (SSMS) ile

Database > (Sağ Tık) Properties > Options > Automatic > Auto Close

Ayar değişikliği SQL Server restart gerektirmemektedir.

Demo

Ayar aktif olduğu durumda;

use [StackOverflow2010]
GO
SELECT * FROM  sys.sysprocesses 
WHERE dbid=DB_ID('StackOverflow2010')
GO
SELECT name, state_desc, is_auto_close_on ,is_cleanly_shutdown 
FROM sys.databases 
WHERE name ='StackOverflow2010'

Demo scriptini çalıştırarak; Auto Close ayarının aktif olduğu veritabanı üzerinde bir connection açıyorum. Connection’ı kontrol etmek için sys.processes sistem view’ini kullanıyorum. Yukarıdaki görselde görülebileceği üzere veritabanı üzerinde 54 id’sine sahip bir session var.

Ardından veritabanı durumunu kontrol ettiğimde, ONLINE durumda ve kapalı olmadığını görüyorum.

use [master]
GO
SELECT * FROM  sys.sysprocesses 
WHERE dbid=DB_ID('StackOverflow2010')
GO
SELECT name, state_desc, is_auto_close_on ,is_cleanly_shutdown 
FROM sys.databases 
WHERE name ='StackOverflow2010'

Veritabanı üzerindeki bağlantımı koparıp, aktif connection olup olmadığını kontrol ediyorum.

Sonrasında veritabanı durumunu kontrol ettiğimde, ONLINE durumda ancak is_cleanly_shutdown kolonunun “1” olduğunu görüyorum. Bu durumda veritabanı kapatıldı ve bir sonraki connection’da kendini açmaya hazır halde bekliyor.

Tekrar bir bağlantı kurulduğunda error log üzerinden veritabanının açıldığında dair log mesajını görebiliriz.

1 yorum

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.