Bu sorunu daha önce yaşadım.
- Büyük bir veritabanınız ve küçük bir günlük sürücünüz var. Yeniden düzenlemek istiyorsunuz (çeşitli nedenlerle).
- Bunu büyük bir parçalanmış tabloda denediğinizde, günlük, günlük sürücüsü dolana ve komut iptal edilene kadar dolar.
- Basit moddaysa, günlük bir sonraki kontrol noktasında temizlenene kadar diğer işlemler başarısız olabilir ve tam modda ise diğer işlemler bir sonraki günlük yedeklemesine kadar başarısız olabilir. Kesinti!
- Tam moddaysanız günlük yedekleme sıklığınızı artırırsınız, ancak yeniden yapılanma örtük bir işlemde yapıldığı için sorunun önlenmesine yardımcı olmaz, bu işlem bitene veya iptal edilene veya durdurulana kadar günlük temizlenmez.
- Ve GERÇEKTEN bu yeniden düzenlemenin tamamlanmasını istiyorum.
Bu biraz karşı-sezgisel çünkü yeniden düzenlemeyi bıraktığınızda kaldığı yerden devam edebilir, biliyorsunuz sadece geri alma yerine işlemi iptal ediyor.
İşte yaptıklarınız. Biraz uzun ama anlaşılır.
- Günlük dosyanızı nispeten büyük bir boyuta getirin, ancak en fazla değil. Temel olarak, yararlı işler yapmak için yeterli alan bırakmak ve ayrıca bazı küçük büyümeler için ortaya çıkarlar, böylece normal işlemler durmaz.
- Dizininizi yeniden düzenlemek için bir iş oluşturun ('Yeniden Düzenle').
Performans koşulunda bir aracı WMI uyarısı ('Emniyet Valfini Yeniden Düzenleyin') oluşturun.
- Nesne: SQLServer: Veritabanları
- Sayaç: Kullanılan Günlük Yüzdesi
- Eşgörünüm: (büyük veritabanı adınız)
- Sayaç yukarı çıkarsa uyarı: 80
- Yanıt: İşi yürütün ('Çeki Yeniden Düzenle')
Bir iş oluşturun ('Çeki Yeniden Düzenle')
- İşte 'Yeniden Düzenle' işinin çalışıp çalışmadığını görmek için msdb.dbo.sysjobactivity'yi kontrol edin. Ve eğer öyleyse ...
- İşi durdurun ve durana kadar yoklayın. Bu birkaç saniye sürebilir.
- (Tam moddaysanız) Günlük yedekleme işinizi tetikleyin ve bittiğinde onaylayın.
- Sys.dm_os_performance_counters'da, günlük boş alan sayacınızın eşiğin altında azaldığını kontrol edin.
- 'Yeniden Düzenle' işini başlatın.
Üretim sunucunuza yapıştırmadan önce düzgün çalıştığından emin olmak için bunu bir yerde, hatta bir geliştirme sanal alanında test edin.
Göreceğiniz şey, 'Yeniden Düzenle' işi başlar ve günlüğü doldurmaya başlar. Günlük yüzde dolmuşsa, 'Yeniden Düzenle' işinin çalıştığını ve büyük olasılıkla hatalı olduğunu gören diğer işinizi çalıştıran WMI uyarısını (yaklaşık 30 saniye içinde) tetikler. Daha sonra 'Yeniden Düzenle'yi durdurur, bir yedekleme yapar, günlük boş alanın makul bir değere döndüğünü doğrular, ardından' Yeniden Düzenleme 'işinizi tekrar kaldığı yerden alır.
Bu nedenle, günlüğünüzü bu senaryoda makul bir şekle göre önceden boyutlandırmanızın nedeni, daha verimli olabilmesi ve ayrıca daha verimli olabilmesi için büyüme / tetikleyici / iş / durdurma / yeniden başlatma sayısını azaltmaktır. zaman içinde yakalanmayan nadir büyüme.
Bu bir çeşit garip senaryo. Birkaç yıl önce bunu başaracağımdan eminim ve burada temeldeki temel sorunlar var. Ancak yüzlerce sunucuyla ilgilenirseniz, MacGyver'in işi yapan geçici bir çözüm haricinde, iş nedenlerinden ötürü, herhangi bir şekilde ele alınamayan birkaç uç vaka ortaya çıkacaktır.
Güvenli, mantıklı, test edilmiş ve iyi belgelenmiş olduğu sürece sorun olmamalıdır.