Tüm Veritabanı Log Dosyalarını Shrink Etmek / Shrinking All Log Files

Veritabanı Log (.LDF) dosyalarımızın hepsini birden shrink etme ihtiyacımız olabilir. Recovery Model Simple olsa dahi bazen bunu yapmamız gerekebilir*

Yazmış olduğum SP ile tüm LDF dosyalarını topluca shrink edebilirsiniz. Bu SPyi tek olarak çalıştırabilir ya da sadece script ürettirebilirsiniz.

* Not: Shrink işleminin periyodik olarak ya da plansız yapılması önerilmeyen bir işlemdir. Shrink bir operasyon olarak ele alınmalı ve bilinçli bir şekilde yapılandırılmalı.

Kullanımı şu şekilde;

EXEC sp_shrinkLogFiles
@executeNumber = 2,  -- Kaç kes çalışsın?
@execute = 1         -- 1: çalıştırır 0: sadece script üretir

SP’nin create scripti;

CREATE PROC sp_shrinkLogFiles

@executeNumber INT = 1,
@execute BIT = 0

AS

DECLARE @cmd varchar(max)

SELECT @cmd = COALESCE(@cmd + '
', '') + '
USE [' + DB_NAME(database_id) + ']
DBCC SHRINKFILE (N'''+ name + ''' , 0, TRUNCATEONLY)'
FROM sys.master_files
WHERE database_id > 4 AND [type] = 1 AND [state] = 0

IF (@execute = 1)
 BEGIN
 PRINT '--- Started: ' + CONVERT(NVARCHAR(19),GETDATE(), 104) + ' ' + CONVERT(NVARCHAR(20),GETDATE(), 114) + ' ---'
 PRINT ''
 WHILE (@executeNumber > 0)
 BEGIN
 EXEC(@cmd)
 SET @executeNumber -= 1
 END
 PRINT ''
 PRINT '--- Finished: ' + CONVERT(NVARCHAR(19),GETDATE(), 104) + ' ' + CONVERT(NVARCHAR(20),GETDATE(), 114) + ' ---'
 END
ELSE
 BEGIN
 SELECT @cmd = REPLACE(@cmd,'TRUNCATEONLY)','TRUNCATEONLY)
GO ' + (SELECT CASE @executeNumber WHEN 1 THEN '' ELSE CAST(@executeNumber AS VARCHAR) END))

SELECT @cmd
 END

Shrink Edilemeyen Databaseleri Shrink Edebilmek

Bilindiği gibi bir veritabanından veri sildiğimizde fiziksel dosya boyutu  aynı kalır. Fiziksel olarak dosya boyutunu küçültmek için shrink işlemi yapmamız gerekiyor.

Bazen shrink işlemi tepkisiz kalabiliyor. Bunun belli başlı sebepleri var. Data dosylarının tutarsız olması gibi yada initial boyutunun çok fazla olması gibi.

Eğer ki data dosyalarınız shrink işleminizin başarılı sonuçlanmasına rağmen aynı kalıyorsa çok büyük ihtimal initial size’ı yüksek kalmıştır. Yani aslında shrink başarılı. Fakat dosyanın başlangıç boyutu çok büyük olduğundan shrink olmamış gibi bir sonuç çıkıyor.

Bunun için shrink ekranında aşağıdaki adımları izleyerek dosya boyutunu azaltabilirsiniz; Okumaya devam et

Database Shrink / Veritabanı Küçültme İşlemi

Arkadaşlar bugüne kısa bir makale ile başlayalım;
Shrink işleminden bahsedeceğim.
Shrink’in kelime anlamı küçültmek demek.Veritabanları boyutları küçülsede diskte kapladığı boyut değişmez.
Mesela 1 GBlık bir veritabanımız olsun, içerisinden 200 MBlık veri sildiğimizde veritabanı boyutu 800 MB olmaz. Yine diskte 1 GB olarak yer kaplar.
Bu nahoş durumu normale indirgemek için shrink işlemine ihtiyaç duyarız.
Shrink işlemi Management Studio üstünden yapılacağı gibi t-sql komutlarıylada yapılabilmektedir. Ben şimdilik T-sql komutlarını göstereceğim.

Okumaya devam et