Forum

Tabloları boşalttım...
 
Bildirimler
Hepsini Temizle

Tabloları boşalttım ama mdf dosyası hala çok kabarık

16 Yazılar
4 Üyeler
0 Reactions
698 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Arkadaşlar merhaba;


Elimde SQL 2000 e ait bir database var.Database deki tüm tabloların içini boşattım, ancak database in mdf dosyası sanki hiçbirşey silmemişim gibi hala eski boyutunda.log dosyasını zaten temizlemiştim.


Bu mdf dosyasının boyutunu nasıl düşürebilirim acaba?

 
Gönderildi : 02/02/2011 12:34

(@EyupDal)
Gönderiler: 152
Reputable Member
 

Mrb..

 

 

Datayı Shrınk yapman lazım 

 BACKUP LOG DATABASEADI WITH TRUNCATE_ONLY .

 Dbcc shrinkfile(Logo_Log, 50)

  

 
Gönderildi : 02/02/2011 12:43

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

cyberanger tşk ama bahsettiğin işlem log dosyasını küçültür yani ldf dosyasını.


ben mdf dosyasından bahsediyorum dikkat edersen...

 
Gönderildi : 02/02/2011 12:53

(@AhmetRende)
Gönderiler: 138
Estimable Member
 

USE [DATABASE]
GO
DBCC SHRINKFILE (N'DATABASE_Data' , 0, TRUNCATEONLY)
GO

bununla mdfyi shrink edebilirsin.

 
Gönderildi : 02/02/2011 13:19

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Webeffect tşk ederim


bahsettiğiniz şekilde query analyzer dan çalıştırdım komutu ancak boyutta bir değişme olmadı.


ekstra birşey daha mı yapmamız gerekiyor acaba

 
Gönderildi : 02/02/2011 14:07

(@turgaysahtiyan)
Gönderiler: 344
Reputable Member
 

sp_spaceused çalıştırıp sonucunu gönderir misin

 
Gönderildi : 02/02/2011 14:21

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

 
Gönderildi : 02/02/2011 14:31

(@turgaysahtiyan)
Gönderiler: 344
Reputable Member
 

Evet 2.5GB boş alan var gözüküyor. Bir de shrinkdatabase deneyelim shrinkfile yerine


DBCC SHRINKDATABASE (database_adi, 10) 

 
Gönderildi : 02/02/2011 18:52

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

işe yaramadı Turgay hocam.


ilginize tşk.

 
Gönderildi : 02/02/2011 19:15

(@turgaysahtiyan)
Gönderiler: 344
Reputable Member
 

oke durum büyük ihtimal şundan kaynaklanıyor.


Extent'ler(8 page=1 extent = 64KB) reserve edilmiş ama çok az bir kısmı(1 page dahi kullanılsa) kullanıldığı için release edemiyoruz.


Bu da fragmentation dan kaynaklanıyor.


2 işlem deneyeceğiz. Önce tüm table'lar için Index'leri DBCC DBREINDEX ile defrag yapmaya çalışacağız. Eğer olmazsa clustered index'siz tabloları belirleyip bunlara cluster index tanımlayıp daha sonra sileceğiz.


Önce 1.yöntemi deneyelim.


Başlamadan önce database backup'ı alalım.


daha sonra aşağıdaki komutu çalıştır.


declare @str varchar(max)


select @str=''


select @str=@str + 'DBCC DBREINDEX ('''+name+''','''',100) ' +char(10) + 'GO' + char(10) from sys.tables


print (@str)


Sorgu sonucu çıkan sorguyu DB de çalıştıralım


daha sonra sp_spaceused u çalıştırdığında unused ın azalıp unallocated space in artmış olması lazım.


eğer böyle olursa database shrink i tekrar yap, eğer olmazsa 2.yönteme geçeceğiz.

 
Gönderildi : 02/02/2011 19:48

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Turgay hocam yazdığınız scripti nerede çalıştıracaz?


SQL Query analyzer da çalıştırdım ama hata verdi.Sonuç şöyle :


Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'max'.
Server: Msg 137, Level 15, State 1, Line 5
Must declare the variable '@str'.
Server: Msg 137, Level 15, State 1, Line 5
Must declare the variable '@str'.
Server: Msg 137, Level 15, State 1, Line 7
Must declare the variable '@str'.


Tablonun içinde çalıştırdım gene hata verdi.

 
Gönderildi : 03/02/2011 13:06

(@turgaysahtiyan)
Gönderiler: 344
Reputable Member
 

2008 alışkanlığı varchar(max)  yapmışım ondan hata verdi.


select  'DBCC DBREINDEX ('''+name+''','''',100) '   from sys.tables


şu sorgu sonucunda gelen kolonun tamamını seçip yeni bir query analyzer kısmında çalıştır. Bu index lerinin tamamını organize edcektir.


İşlemlere başlamadan önce backup almayı unutma

 
Gönderildi : 03/02/2011 14:33

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Bu sorguyu query analyzer da çalıştırdım.Sonuç şöyle ;


Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'sys.tables'.

 
Gönderildi : 04/02/2011 12:54

(@AhmetRende)
Gönderiler: 138
Estimable Member
 

Bu sorguyu query analyzer da çalıştırdım.Sonuç şöyle ;

Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'sys.tables'.

2000de bu tablonun adı farklı. o yüzden bu hatayı veriyor.
sys.tables yerine şunu yazıp denermisin; dbo.sysobjects

 

 
Gönderildi : 04/02/2011 13:16

(@turgaysahtiyan)
Gönderiler: 344
Reputable Member
 

2000 den iyice kopmuşuz artık 🙂


sys.tables yerine şunu kullanır mısın


sysobjects where type='U'

 
Gönderildi : 04/02/2011 14:36

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

arkadaşlar konu günceldir.

yardımlarınızı bekliyorum.

 
Gönderildi : 07/12/2011 16:18

Paylaş: