İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Kategori: MS SQL Server
Fırat Boyan 24.01.2018 2

SQL Server 2014'te Transaction Log Dosya Boyutu Küçültme-Shrink Etme

SQL Server oluşturulan Database dosyarının zaman içinde ortaya çıkan en önemli sorunlarından birisi de Database (veri tabanı) boyutlarının giderek artmasıdır. SQL Server üzerinde bir Database (veri tabanı) oluşturulduğu zaman, .mdf uzantılı bir Database dosyası ve .ldf uzantılı bir Transaction Log dosyası oluşur. Transaction Log dosyası, Database üzerinde yapılan işlemlerin ilk yazıldığı ve Select, Update, Insert vb. gerçekleşen işlemlerin yer aldığı bir dosyadır. Database (veri tabanı) dosyasının doğru bir şekilde hesaplanmadığı sistemlerde bir süre sonra Server üzerinde Transaction Log dosyasının boyutu nedeniyle karşılaşacağınız Disk boyutu sorunlarının çözümü için uygulanacak yöntemlerden bir tanesi, Transaction Log dosyasının küçültülmesi, Transaction Log Shrink etme işlemidir. Bu makalemde de sizlere; SQL Server 2014'te Transaction Log dosya boyutunun nasıl küçültüleceğinden, ya da tam teknik jargonu ile nasıl SQL Server Database (veri tabanı) shrink etme işleminin nasıl yapılacağından bahsediyor olacağım.

NOT: Bu işlemleri yapmadan önce, daha önce paylaştığım SQL Server Management Studio ile Database Backup Alma işlemini yapmanızı öneririm.

1- AdventureWorks ismindeki Database'ime ait .mdf ve .ldf uzantılı dosyalar aşağıdaki gibi görülmektedir. 

sql server database log dosyası temizleme, küçültme

2- Burada yapacağımız işlem sırasında, Transaction Log dosyasını küçültüleceğimiz (Shrink edeceğimiz) Database (veri tabanı) dosyasının SQL Server üzerinde Connected olmaması, daha başka bir ifade ile Detach edilmesi gerekmektedir. Bu nedenle, SQL Server Management Studio'daki Databases üzerinde sağ tıklayarak sırasıyla Tasks > Detach seçeneğine tıklıyorum.

 sql server database log dosyası temizleme, küçültme

 sql server database log dosyası temizleme, küçültme

3- Karşımıza Detach Database penceresi geliyor. Bu pencerede herhangi bir değişiklik yapmadan OK butonuna basıyorum ve Database dosyasını Detach ediyorum.

sql server database log dosyası temizleme, küçültme

4- Databases bölümünü kontrol ettğimde, Database (veri tabanı) dosyasının Detach olduğunu görüyorum.

sql server database log dosyası temizleme, küçültme

5- Eğer Transaction Log dosyası küçültme işlemini başarılı bir şekilde gerçekleştirir, Database de sorunsuz bir şekilde çalışırsa, bu durumda eski Transaction Log dosyası silinebilir. Bu işlemleri yapmadan önce daha önce mutlaka Backup alma işlemini yapmanızı öneririm. C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA dizini altinda bulunan Transaction Log dosyasını Cut (kes) ederek C:\DB_LOG_Backup dizini altına Paste (yapıştır) etmek suretiyle Database Log Backup (veri tabanı Log yedeği) alıyorum. Eski Transaction Log dosyasını da direkt olarak silmek yerine, herhangi bir sorun yaşamamak için ve Backup (yedek) olarak tutmak için bu işlemi yapıyorum.

sql server database log dosyası temizleme, küçültme

sql server database log dosyası temizleme, küçültme

sql server database log dosyası temizleme, küçültme

6- Eski Transaction Log dosyasını Backup olarak sakladıktan sonra, Database (veri tabanı) dosyasını tekrar Attach etmek için SQL Server Management Studio'da Object Explorer altındaki Databases üzerinde sağ tıklayarak Attach… seçeniğini seçiyorum.

sql server database log dosyası temizleme, küçültme

7- Attach Databases penceresinde Databases to attach kısımında Add.. butonuna basıyorum.

sql server database log dosyası temizleme, küçültme

7.1- Locate Database Files penceresinde Dabatase'in bulunduğu dizini göstermemiz gerekiyor. Benim Database dosyam, C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA altında bulunduğu için bu dizin altından seçtim. Sizin kendi yapınızda farklı bir dizin altında bulunuyorsa, o dizin altından seçebilirsiniz. Burada .mdf uzantılı Database (veri tabanı) dosyamı seçerek OK butonuna basıyorum.

sql server database log dosyası temizleme, küçültme

8- Attach Databases penceresinde .mdf uzantılı Database dosyasının eklendiğini görüyorum ama .log uzantılı Transaction Log dosyasının ise, Message bölümü altınd Not Found mesajını yani Tansaction Log dosyasının bulanamadığını belirten bir mesaj geldiğini görüyorum. Bunun nedeni, Transaction Log dosyasını daha önce bulunduğu dizinden başka bir yere taşımamızdır. Transaction Log dosyasının bulanamadığı uyarısını dikkate almadan OK butonuna basıyorum.

sql server database log dosyası temizleme, küçültme

9- An error occurred when attaching the database(s). (Database Attach edilirken, bir hata ile oluştu) şeklinde bir hata mesajı alıyorum. OK butonuna basıyorum.

sql server database log dosyası temizleme, küçültme

10- Tansaction Log dosyası olmadığı için, Attach etme işlemi tamamlanmayacak. Bu nedenle; işleme devam edebilmek için Transaction Log dosyasını bulunduğu satırı seçiyor, Remove butonuna basıyorum.

img-responsive CenterImage

11- Transaction Log dosyasının bulunduğu satırın silindiğini görüyoruz. Aslında bizim de yapmak istediğimiz, yeni bir Transaction Log dosyasının attach etme işlemi ile birlikte otomatik olarak oluşturulması ve bu şekilde Database'e bağlı olarak çalışan Transaction Log dosya boyutunun küçültülmesi yani Shrink edilmesiydi. OK butonuna basarak Attach işlemini tamamlıyorum.

sql server database log dosyası temizleme, küçültme

12- Databases altına AdventureWorks adındaki Database'in attach edildiği görülmektedir.

sql server database log dosyası temizleme, küçültme

13- Database (veri tabanı) dosyasını varsayılan dizin olan C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA dizini altında kontrol ettiğimizde, yeni Transaction Log dosyasının oluştuğunu ve boyutunun küçüldüğünü (Shrink edildiğini) görüyorum.

sql server database log dosyası temizleme, küçültme

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar: Fırat Boyan

Adım Fırat Boyan. 1985 yılında Antalya'nın Alanya ilçesinde doğdum. 2008 yılından beri İstanbul'da yaşıyorum. Kıdemli Sistem Mühendisi, Microsft Sertifikalı Eğitmen (MCT) ve İngilizceden Türkçeye ve Türkçeden İngilizceye serbest, Noter Yeminli Tercümanım. 18 yıldır Bilgi Teknolojileri alanında hizmet veriyorum. Şu anda Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum ve Bilgi Teknolojileri alanında eğitim hizmetleri veren Bilge Adam bünyesinde Microsoft Sertifikalı Eğitmen (MCT) olarak Sistem ve Network Uzmanlığı eğitimleri veriyorum. Bunun yanı sıra, kurumsal firmalara BT danışmanlık hizmetleri de vermekteyim. Hakkımda daha fazla bilgi sahibi olmak ve sahip olduğum Microsoft sertifikalarımı incelemek için Hakkımda sayfasını ziyaret edebilirsiniz.

YORUMLAR
Bu makaleye 2 yorum yapıldı.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.

   
   
  750 karakter yazabilirsiniz.
 
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.


01.02.2018 Hakan Küçük
Çok güzel makale, çok işime yaradı. Teşekkürler Fırat hocam.

01.02.2018 Fırat Boyan
Teşekkürler Hakan. İşinine yaramasına sevindim.