Forum
Arkadaşlar merhaba
SQL 2000 kullanıyorum.Elimde 7 GB lık bir database var.
databasedeki hangi table ne kadar yer kaplıyor şu an görüyorum.
declare @id int
declare @type character(2)
declare @pages int
declare @dbname sysname
declare @dbsize dec(15,0)
declare @bytesperpage dec(15,0)
declare @pagesperMB dec(15,0)
create table #spt_space
(
objid int null,
rows int null,
reserved dec(15) null,
data dec(15) null,
indexp dec(15) null,
unused dec(15) null
)
set nocount on
-- Create a cursor to loop through the user tables
declare c_tables cursor for
select id
from sysobjects
where xtype = 'U'
open c_tables
fetch next from c_tables
into @id
while @@fetch_status = 0
begin
/* Code from sp_spaceused */
insert into #spt_space (objid, reserved)
select objid = @id, sum(reserved)
from sysindexes
where indid in (0, 1, 255)
and id = @id
select @pages = sum(dpages)
from sysindexes
where indid < 2
and id = @id
select @pages = @pages + isnull(sum(used), 0)
from sysindexes
where indid = 255
and id = @id
update #spt_space
set data = @pages
where objid = @id
/* index: sum(used) where indid in (0, 1, 255) - data */
update #spt_space
set indexp = (select sum(used)
from sysindexes
where indid in (0, 1, 255)
and id = @id)
- data
where objid = @id
/* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */
update #spt_space
set unused = reserved
- (select sum(used)
from sysindexes
where indid in (0, 1, 255)
and id = @id)
where objid = @id
update #spt_space
set rows = i.rows
from sysindexes i
where i.indid < 2
and i.id = @id
and objid = @id
fetch next from c_tables
into @id
end
select top 25
Table_Name = (select left(name,25) from sysobjects where id = objid),
rows = convert(char(11), rows),
reserved_KB = ltrim(str(reserved * d.low / 1024.,15,0) + ' ' + 'KB'),
data_KB = ltrim(str(data * d.low / 1024.,15,0) + ' ' + 'KB'),
index_size_KB = ltrim(str(indexp * d.low / 1024.,15,0) + ' ' + 'KB'),
unused_KB = ltrim(str(unused * d.low / 1024.,15,0) + ' ' + 'KB')
from #spt_space, master.dbo.spt_values d
where d.number = 1
and d.type = 'E'
order by reserved desc
drop table #spt_space
close c_tables
deallocate c_tables
Sorgu sonuçları şöyle
benim bu databese deki gereksiz işgal edilen alanı boşaltarak database boyutunu düşürmem gerek çünkü program yavaşladı.
Anladığım kadarıyla UNUSED_KB alanı boşaltılabilecek alanı gösteriyor.
Bununla ilgili ne yapabilirim?
Not: Database transaction log dosyasını zaten temizliyorum.Bahsettiğim temizlik mdf dosyasıyla ilgili.
Silmek yerine shrink işlemi ile küçültebilirsiniz.
shrink işlemi mdf dosyası üzerinde etkilimi?
Ben shrink i log dosyalarında etkili diye biliyorum.
evet ancak shrink islemi ile kucultebilirsin mdf 'in cok kuculdugunu goreceksin.ben sık sık kullanmak zorunda kalıyorum.
Merhaba;
Shrink işlemi mdf dosyası üzerinde kesinlikle etkili ve mdf file 'ını çok küçültecektir. Am bu işlemden önce full backup, sonrasında da transaction log backup alman gerekir. Full Backup şart değil ama yine de alırsanız, iyi olur.
Saygılarımla .
hangi komutla yapıyorsunuz örnek verebilirmisiniz.
ben database shrink ediyorum ama pek birşey farketmiyor MDF üzerinde...
Merhaba;
SQL 2005 üzerindeki bir database de TRN log backup aldıktan sonra aşağıdaki komutları uygulayıp ,db'yi inanılmaz küçültmüştük.
Değişkenlerinizi (DB Name, DB TRN File Name) tanımlayıp ,aşağıdaki komutları kullanabilirsiniz.
DBCC SHRINKFILE(@nomlog, 200)
BACKUP LOG @nomdb WITH TRUNCATE_ONLY
DBCC SHRINKFILE(@nomlog, 200)
Ya da MSDN linkini inceleyebilirsiniz, size fikir verebilir.
( http://msdn.microsoft.com/en-us/library/ms190488%28v=SQL.90%29.aspx)
Saygılarımla.
Normal
0
21
false
false
false
TR
X-NONE
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}