Rösta fram årets bästa pepparkakshus!
2007-03-05, 20:32
  #1
Medlem
Thomas_Bodstroms avatar
Hej,

Det var en gång en 380 GB stor databas. Denna databas har det körts script på för att trunkera en hel mängd tabeller, så att det faktiskta datat i databasen inte tar mer än 12 GB. Ett bevis på att det inte är mer än 12 GB data i databasen är att en backupfil av databasen blir 12 GB stor. MSSQL-backup plockar bort "luft", men komprimerar inte backupfilen. Jag har gjort en mängd olika försök att krympa databasen, men lyckas inte. Datafilen bör se ut som en schweizerost, stora tomrum som kan trollas bort. Men jag går bet...

Vad har jag då försökt med?

Shrink via GUI, både på database och files. Valt option för att reorganisera utrymme så att datafilen kan släppa utrymme och krympa.

Shrink via kommandot "DBCC SHRINKDATABASE" och "DBCC SHRINKFILE".
Options. TRUNCATEONLY. Har även testat att ange hur stort ledigt utrymme i procent som ska lämnas i datafilen efter shrink (varav jag valde 1%), och har testat att tala om hur stor jag vill att datafilen ska vara efter shrink. Dessa kommandon har jag även testat med parametern autoshrink satt till TRUE.

Har också defragmenterat index.

Testade en annan variant, och det var att exportera databasen via export wizard. Kopiera alla tabeller till en ny, tom, databas. Det gick sådär. Datafilen för den nya databasen blir bara 1 GB, när den borde bli 12 GB. Vetefan var övrigt data tar vägen, eller ens vilken data som kopierats över, och vilken data som inte kommit över.

Hmm, det får bli min andra fråga. Finns det något icke-kommersiellt verktyg eller script för att jämföra två databaser på objektnivå? Dvs. som listar objektonamn och dess storlek för de båda databaserna på ett överskådligt sätt?

*hoppas att det sitter en MSSQL 2005 guru därute med svar på min fråga*
Citera
2007-03-06, 10:53
  #2
Medlem
mr.arnes avatar
Det går inte att göra någon select * från alla tabellerna och spara svaren som nya tabeller?
Citera
2007-03-06, 21:25
  #3
Medlem
Thomas_Bodstroms avatar
Det går säkert att skriva ett magiskt tsql-script som gör något motsvarande det du föreslår, men jag vill få med stored procedures, constraints, triggers, rubbet helt enkelt, och är själv inte särskilt duktig på att skriva tsql-kod. Jag trodde att export wizard skulle fixa det, men den kopierar bara tabellerna. Ska kika på om alternativet "script as database" (eller vad det nu heter) kan hjälpa mig. Behöver också något bra sätt att jämföra databaserna på objektnivå, det är nog det allra viktigaste, så att integriteten behålls. ALL data måste över, och jag ska på något lättöverskådligt sätt kunna bevisa att så har skett också.
Citera
2007-03-07, 00:37
  #4
Medlem
mr.arnes avatar
Prova fråga här, många kunniga:

http://episteme.arstechnica.com/eve/forums/a/frm/f/6330927813
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in