Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ayrıntılar
| Özellik | Değer |
|---|---|
| Ürün Adı | SQL Server |
| Olay Kimliği | 9017 |
| Olay Kaynağı | MSSQLSERVER |
| Bileşen | SQLEngine |
| Sembolik Ad | LOG_MANY_VLFS |
| İleti Metni | Veritabanı %ls, aşırı miktarda olan %d sanal günlük dosyasına sahip. Çok fazla sanal günlük dosyası uzun başlatma ve yedekleme sürelerine neden olabilir. Günlüğü küçültmeyi ve sanal günlük dosyalarının sayısını azaltmak için farklı bir büyüme artışı kullanmayı göz önünde bulundurun. |
Explanation
Veritabanı başlatılırken, SQL Server veritabanında çok sayıda sanal günlük dosyası (VLF) olduğunu algılar ve bu hata iletisini günlüğe kaydeder. Hatayla karşılaşabileceğiniz durumlar şunlardır:
- SQL Server örneğini başlattığınızda
- Veritabanını geri yükleme
- Veritabanı ekleme
Bu örneğe benzer 9017 bilgilendirme iletisi SQL Server hata günlüğüne kaydedilir:
Database dbName has more than n virtual log files which is excessive. Too many virtual log files can cause long startup and backup times. Consider shrinking the log and using a different growth increment to reduce the number of virtual log files. Too many virtual log files can adversely affect the recovery time of the database.
Ayrıca ortamınızda Çoğaltma, Veritabanı Yansıtma veya Always On teknolojileri kullanıyorsanız bu teknolojilerle ilgili performans sorunlarıyla karşılaşabilirsiniz.
Birçok VLF'nin çoğaltma üzerindeki etkisi
Günlük okuyucu işleminin çoğaltma için işaretlenmiş işlemler için her sanal günlük dosyasını taraması gerektiğinden çok fazla günlük dosyası çoğaltmayı etkileyebilir. Saklı yordamın performansını sp_replcmds izleyerek bu davranışı görebilirsiniz. Günlük okuyucu işlemi, sanal günlük dosyalarını taramak ve çoğaltma için işaretlenmiş işlemleri okumak için saklı yordamı kullanır sp_replcmds .
Nedeni
İşlem günlüğü dosyalarınızın parametresi için küçük değerler belirttiğinizde FILEGROWTH bu sorun oluşur.
SQL Server Veritabanı Altyapısı, her fiziksel günlük dosyasını dahili olarak birkaç sanal günlük dosyasına (VLFs) böler. SQL Server 2008 R2 Service Pack 2, bir veritabanı başlatıldığında (SQL Server örneğinin başlatılması veya veritabanının eklenmesi veya geri yüklenmesi nedeniyle) günlüğe kaydedilen ve SQL Server 2008 R2'de 10.000'den fazla VLF'ye sahip olan veya SQL Server 2012 ve sonraki sürümlerde 10.000'den fazla VLF'ye sahip olan yeni bir ileti (9017) kullanıma sunulmuştur.
Uyarı
SQL Server 2012'de, veritabanında 10.000 VLIF olduğunda bu ileti günlüğe kaydedilir, ancak hata günlüğünde bildirilen gerçek ileti yanlış "1000 VLF" belirtir. Uyarı 10.000 VLIF'den sonra oluşur. Ancak, ileti 1.000 VLIF bildirir. Bu sorun sonraki sürümlerde düzeltilmiştir.
Kullanıcı eylemi
Bu sorunu çözmek için aşağıdaki adımları izleyin:
Bu sorguyu kullanarak SQL Server'ınızın VLF sayısını ve ortalama boyutunu görüntüleyebilirsiniz. Sonuç, hangi veritabanlarına odaklanabileceğinizi belirlemenize yardımcı olur:
SELECT db.name, count(dbl.database_id) AS Total_VLF_count, CONVERT (DECIMAL (10, 2), avg(dbl.vlf_size_mb)) AS Avg_VLF_Size_MB FROM sys.databases AS db CROSS APPLY sys.dm_db_log_info(db.database_id) AS dbl GROUP BY db.name ORDER BY Total_VLF_count DESC;Daha fazla bilgi için bkz. sys.dm_db_log_info.
SQL Server Management Studio kullanarak veya kullanarak
DBCC SHRINKDB/DBCC SHRINKFILEişlem günlüğünüzü azaltın.İşlem günlüğü dosyası boyutunu büyük bir değere tek seferlik artırma. Bu tek seferlik artış, sık sık otomatik büyümeyi önlemek için yapılır. Daha fazla bilgi için bkz . İşlem günlüğü dosyasının boyutunu yönetme.
Parametresini
FILEGROWTHşu anda yapılandırılandan daha büyük bir değere yükseltin. Bu, veritabanınızın etkinliğine ve günlük dosyanızın ne sıklıkta büyüdüğünü temel almalıdır.
Tip
Belirli bir örnekteki tüm veritabanlarının geçerli işlem günlüğü boyutu için en uygun VLF dağılımını ve gerekli boyutu elde etmek için gerekli büyüme artışlarını belirlemek için bu betike bakın.