5 Ocak 2008 Cumartesi

SQL Server 2008' de 'TRUNCATE_ONLY' ve 'NO_LOG' BACKUP Seçenekleri

Merhaba arkadaşlar,

Bu yeni senede yazdığım ilk makaleme yeni yılınızı kutlamak ile başlamak istiyorum, iyi seneler olsun hepimize =)

Yeni seneyle beraber yeni yazılımlar da çıkıyor ve bildiğiniz üzere SQL Server 2008 bu yeni Sunucu kategorisindeki yazılımlardan birisi.

Yeni yazılımlarla birlikte elbet de yenilikler de geliyor ve zaman zaman bu yeniliklerden de bahsediyorum. İşte bu makalemde de BACKUP komutunda artık TRUNCATE_ONLY ve NO_LOG ' un artık kullanılamayacağından, çünkü BACKUP komutunun artık bu seçenekleri tanımadığından bahsedeceğim.

Bilmeyenler için kısaca değineyim; TRUNCATE_ONLY VE NO_LOG seçeneklerini sadece BACKUP LOG ile kullanabiliriz. Kullanım amacı ise veritabanına ait bir Transaction Log dosyasındaki Pasif Sanal Log (Inactive Virtual Logs)' ları temizlemek ve Transaction Log içerisine kaydedilecek yeni kayıtlar için yer açmaktır. Bu çok ayrı bir konu, buna başka bir makalede değineceğim.

Bu BACKUP seçeneklerinin, SQL Server' ın gelecekteki versiyonlarında artık kullanılamayacağı zaten SQL Server 2005 Books Online' da belirtilmişti.

Peki SQL Server 2008' de veritabanımızın Transaction Log dosyasındaki Pasif Sanal Log' ları nasıl temizleyeceğiz? Hemen cevabı da geliyor: Veritabanımızın Recovery State' ini SIMPLE yaparak. Tabii eğer veritabanınızın Recovery State' i zaten SIMPLE ise zaten Transaction Log' unuz otomatik olarak pasif loglardan temizlenecektir. Ama eğer FULL veya BULK LOGGED ise, o zaman veritabanınızın Recovery State' ini SIMPLE yaptıktan sonra tekrar eski haline döndürebilirsiniz.

Örnek:
ALTER DATABASE DenemeVT SET RECOVERY SIMPLE
ALTER DATABASE DenemeVT SET RECOVERY FULL

ÇOK ÖNEMLİ:
Veritabanınızın Recovery State' ini SIMPLE yapmanızın size olan maliyetlerini önceden bilmelisiniz. Aksi takdirde hiç istemediğiniz sonuçlarla karşılaşabilirsiniz. Maksadım kimsenin gözünü kormutmak değil elbet, fakat bu iş bu şekilde yapılıyor diye her şey yolunda gidecek gibi bir durum söz konusu değil. Veritabanınızın Recovery State' ini değiştirmek, Transaction Log zincirini kırar. Yani eğer bahsi geçen veritabanında Transaction Log yedekleme işlemi yapıyorsanız, bu zincir kırılacaktır ve veritabanınızın Recovery State' ini SIMPLE yaptıktan sonraki alınan Transaction Log' lar bir RESTORE durumunda işe yaramayacaktır çünkü zincir kırılmıştır. Bunu engellemek için ise veritabanınızın Recovery State' ini değiştirmeden önce tam yedeğini almanızı ve SIMPLE' dan tekrar FULL' e geçtikten sonra tekrar tam yedeğini almanızı tavsiye ederim.


Ekrem Önsoy

Hiç yorum yok: