SQL Server administration and T-SQL development, Web Programming with ASP.NET, HTML5 and Javascript, Windows Phone 8 app development, SAP Smartforms and ABAP Programming, Windows 7, Visual Studio and MS Office software
Development resources, articles, tutorials, code samples, tools and downloads for ASP.Net, SQL Server, Reporting Services, T-SQL, Windows, AWS, SAP HANA and ABAP

DBCC SHRINKDATABASE ve DBCC SHRINKFILE ile veritabanı dosyalarının boyutlarının küçültülmesi

DBCC SHRINKDATABASE komutu ile veritabanındaki tüm data ve log dosyalarının boyutunu küçültebilirsiniz. DBCC SHRINKFILE komutu ile ise veritabanınızı oluşturan veri veya log dosyalarından birisini seçerek sadece seçtiğiniz dosyanın boyutunu küçültebilirsiniz.

Peki veritabanınız hangi dosyalardan oluşuyor?

Eğer ilgili veritabanına Query Analyzer ile bağlıysanız, aşağıdaki sorguyu çalıştırarak veritabanını oluşturan herbir dosyayı ek bilgiler ile listeleyebilirsiniz.

SELECT * FROM sysfiles
Code
fileid groupid size maxsize growth status perf name filename
1 1 416  -1 10 1048579 0 Forums  C:\Program Files\Microsoft SQL Server\MSSQL\data\Forums.mdf
2 0 256 -1 10 1097794 0 Forums_log C:\Program Files\Microsoft SQL Server\MSSQL\data\Forums_log.ldf

Burada gördüğümüz size ifadeleri page size yani 8 kb cinsinden ifade edilmiştir. Yani .mdf dosyamızın büyüklüğü gerçekte 3.328 KB ve .ldf dosyamızın büyüklüğü 2.048 KB'tır.

 

Aşağıdaki DBCC SHRINKDATABASE ifadesinden sonra ise dönen değerler aşağıdaki gibidir.

DBCC SHRINKDATABASE (Forums)
Code
DbId  FileId  CurrentSize  MinimumSize  UsedPages  EstimatedPages
11 1 384 96 376 376
11 2 63 63 56 56

Burada fiziksel olarak .mdf dosyamızın boyutunun 8 * 384 (3.072 KB) ve .ldf dosyamızın boyutunun 8 * 63 kb (504 KB) olduğunu görebiliriz.





Eğer veritabanı transaction log dosyanızın çok büyüdüğünü düşünüyorsanız ve çeşitli nedenlerden dolayı transaction log dosyanızın (.ldf) boyutunu küçültmeniz gerekiyorsa DBCC SHRINKFILE komutunu kullanabilirsiniz.

Örneğin;

DBCC SHRINKFILE(Forums_log)
Code

komutu ile Forums_log, transaction log dosyasını ilk tanımlanırken verilen varsayılan büyüklüğe küçültür.

DBCC SHRINKFILE(Forums_log, 2)
Code

komutu ile log dosyasının boyutunu 2 MB büyüklüğe küçültülmesini isteyebiliriz.Büyüklük parametresi MB cinsinden tam sayı ile ifade edilir.

DBCC SHRINKFILE(Forums_log, 2, NOTRUNCATE)
Code

komutu ile log dosyası 2 MB büyüklüğe küçültüldükten sonra elde edilen boş kısmın işletim sistemi kullanımına açılmamasını sağlar. Boş kısım yine log dosyasında kalır.

DBCC SHRINKFILE kullanımında aşağıdaki gibi bir durumla da karşılaşabilirsiniz.

DBCC SHRINKFILE(Forums_log, 2)
Code

komutu ile elde edeceğiniz CurrentSize değeri 352 (2.816 KB) olsun ve fiziksel olarak bir küçülme olmadığını da gördünüz diyelim.

BACKUP LOG Forums WITH TRUNCATE_ONLY
Code

komutunu çalıştırdıktan sonra ilk çalıştırdığınız

DBCC SHRINKFILE(Forums_log, 2)
Code

komutu ile bu sefer fiziksel bir küçülmeyi ifade eden 256 (2.048 KB) gibi bir CurrentSize değerine ulaşabilirsiniz



SQL Server

SQL Server 2019 Installation
download SQL Server 2019
download SQL Server 2017
download SQL Server 2016
download SQL Server 2014
download SQL Server 2012
MacOS ve SQL Server 2019


Copyright © 2004 - 2021 Eralper YILMAZ. All rights reserved.