Site kurmak için (0216) 472 65 64 nolu telefondan danışmanımızla hemen iletişime geçebilirsiniz. Teşekkür ederiz!
2 saate kadar web sitesi güncelleme ve email kurulum desteği 3.748 TL + KDV olarak güncellenmiştir.
Marenova, web sitesi oluşturmada lider bir firmadır.
T (0544) 849 65 90
Marenova Bilişim Ltd. Şti.
İkbal Cd. Çamlık Mah.
Gönülden Sk. No:21B
34774 Ümraniye, İSTANBUL
SQL Server veritabanı yöneticilerinin ve yazılım geliştiricilerin sıkça karşılaştığı en can sıkıcı sorunlardan biri, SQL Server Management Studio (SSMS) üzerinden veritabanı listesini genişletmeye çalışırken yaşanan aşırı yavaşlıktır.
Özellikle sunucunuzda sadece 50-80 adet veritabanı varken bile “Databases (Expanding...)” uyarısında dakikalarca beklemek, geliştirme ve yönetim süreçlerini adeta kilitler. Peki, bu donma ve yavaşlığın gerçek nedeni nedir?
Bu yazımızda, forumlarda ve makalelerde dolaşan şehir efsanelerini bir kenara bırakıyor; sorunun kök nedenini ve tek bir T-SQL sorgusuyla uygulanabilecek kesin çözümünü paylaşıyoruz.
SQL Server kurulumunun ardından bir süre sorunsuz çalışan sisteminizde, SSMS üzerindeki Databases düğümüne tıkladığınızda sol panel 4-5 dakika boyunca donabilir.
Bu durumla karşılaşıldığında genellikle internetteki yönlendirmeler şu şekildedir:
"RAM arızalı veya yetersiz."
"Disk (HDD/SSD) bozuk veya I/O hızı düştü."
"SQL Server Express kullanıyorsunuz, Standard veya Enterprise sürüme geçmelisiniz."
"SQL Server kurulumu bozulmuş, Repair yapmalısınız."
Ancak sistem kaynaklarını (Resource Monitor) izlediğinizde diskin ve RAM'in normal çalıştığını görürsünüz. Dahası, master..sysdatabases tablosuna bir T-SQL sorgusu attığınızda listelemenin milisaniyeler içinde geldiğini, sadece SSMS arayüzündeki görsel ağaç (treeview) yapısının kilitlendiğini fark edersiniz.
Anlaşılacağı üzere bu durum ne RAM veya disk arızasıdır ne de SQL Server Express sürümünün bir kısıtlamasıdır. Sorun tamamen veritabanı yapılandırma ayarlarından kaynaklanmaktadır.
AUTO_CLOSE ÖzelliğiManagement Studio (SSMS), sol taraftaki Databases listesini oluştururken arka planda veritabanlarının durumlarını ve metadata bilgilerini okumaya çalışır.
Eğer sunucunuzdaki bazı veritabanlarında AUTO_CLOSE seçeneği ON (Açık) olarak kalmışsa, SQL Server her bir veritabanının durumunu sorgularken ilgili veritabanını önce diskten belleğe yükleyip başlatmak zorunda kalır. Sorgu bittiğinde ise veritabanı tekrar kapanır.
Veritabanı listenizde AUTO_CLOSE ayarı açık birkaç veritabanı bile olsa, SSMS listenin tamamını derlerken her biri için tek tek başlatma süreci bekleyeceğinden devasa bir gecikme (latency) meydana gelir.
AUTO_CLOSE Ayarını KapatmakBu sorunu tek tek veritabanı özelliklerine girerek düzeltmek yerine, aşağıdaki T-SQL scriptini kullanarak sunucunuzdaki tüm veritabanları için AUTO_CLOSE özelliğini kapatabilir, recovery modelini optimize edebilir ve bellek birikintilerini temizleyebilirsiniz.
Aşağıdaki sorguyu SSMS üzerinde master veritabanında çalıştırarak tüm veritabanlarınızda toplu düzenleme yapabilirsiniz:
USE MASTER
GO
DECLARE
@isql VARCHAR(2000),
@dbname VARCHAR(64)
-- Sistem veritabanları dışındaki tüm veritabanları taranır
DECLARE c1 CURSOR FOR
SELECT name FROM master..sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN c1
FETCH NEXT FROM c1 INTO @dbname
WHILE @@fetch_status <> -1
BEGIN
-- 1. AUTO_CLOSE özelliğini kapatıyoruz (Aşırı yavaşlığı çözen temel adım)
SELECT @isql = 'ALTER DATABASE [@dbname] SET AUTO_CLOSE OFF'
SELECT @isql = REPLACE(@isql, '@dbname', @dbname)
PRINT @isql
EXEC(@isql)
-- 2. Log şişmelerini önlemek için Recovery Model'i Simple yapıyoruz
SELECT @isql = 'ALTER DATABASE [@dbname] SET RECOVERY SIMPLE'
SELECT @isql = REPLACE(@isql, '@dbname', @dbname)
PRINT @isql
EXEC(@isql)
-- 3. Değişiklikleri diske yazıp bellek takibini rahatlatıyoruz
SELECT @isql = 'USE [@dbname] CHECKPOINT'
SELECT @isql = REPLACE(@isql, '@dbname', @dbname)
PRINT @isql
EXEC(@isql)
FETCH NEXT FROM c1 INTO @dbname
END
CLOSE c1
DEALLOCATE c1
GO
İpucu: Script çalıştıktan sonra SSMS arayüzünde Databases sekmesine sağ tıklayıp Refresh (F5) yapmanız yeterlidir. Veritabanı listenizin anında ve takılmadan açıldığını göreceksiniz.
Veritabanı yönetimi yalnızca doğru sorguları yazmakla değil, doğru sunucu yapılandırması ve optimize edilmiş hosting altyapılarıyla bir bütündür. SQL Server projelerinizde yüksek disk I/O hızlarına, düşük erişim sürelerine ve maksimum performansa ihtiyaç duyuyorsanız, donanımsal ve yazılımsal olarak optimize edilmiş sunucu çözümlerimizden yararlanabilirsiniz.
Kesintisiz, yüksek hızlı ve güvenli veritabanı & web hosting altyapıları için Marenova uzman kadrosuyla hemen tanışın!