Just nu i M3-nätverket
Jump to content

Storlek på SQL Databas


patrik.berntsson

Recommended Posts

patrik.berntsson

Hur kan jag få reda på storleken på en databas i Microsoft SQL Server? Alltså inkl alla tabeller mm.

 

Väldigt tacksam för svar

 

/ patrik.berntsson

[inlägget ändrat 2002-10-21 20:50:53 av patrik.berntsson]

Link to comment
Share on other sites

Mikael Ericsson

Högerklicka på databasen och välj Propertys i managern.

Där ser du storleken på databasen och tillhörande loggfil.

 

Link to comment
Share on other sites

patrik.berntsson

Det var någon jäkel som flyttade denna tråden så meningen med dem försvann =(

 

Grejen är att jag via ASP (VBScript) få denna informationen.

 

Link to comment
Share on other sites

Mikael Ericsson

Den här koden listar alla databasnamn samt storlek med hjälp av den inbygda proceduren sp_databases.

 

set Conn1=Server.CreateObject("ADODB.Connection")
Conn1.Open Databasxxx

sqlstr="exec sp_databases"
Set Conn1Res=Conn1.Execute(sqlstr)
if not Conn1Res.eof then
do until Conn1Res.eof	
	response.write Conn1Res(0)&" : "&Conn1Res(1) &"<br>"
	Conn1Res.movenext
loop
end if

 

 

 

Link to comment
Share on other sites

Det var jag som flyttade den då det inte framkom att du vill ha fram information med hjälp av ASP.

 

Förtydliga dina frågor så slipper vi missförstånd.

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Äsch, vill du ha riktigt roligt skall du nog använda "sp_spaceused tablename"

 

Den brukar jag använda för att kunna skälla ut mina utvecklare när de inte skriver bra indexar !

 

Den kan du köra på en hel db också, så här tex:

 

CREATE TABLE #Temp (name sysname, rows int, reserved varchar(18), data varchar(18), index_size varchar(18), unused varchar(18))

EXEC sp_msforeachtable 'INSERT #Temp EXEC sp_spaceused [?]'

SELECT * from #Temp ORDER BY name

DROP TABLE #Temp

 

/David

 

Link to comment
Share on other sites

hehe, lite Truncates känns alltid bra...

 

Faktum är att du skapar en temporär tabell.

 

Som du ser skapas den först med CREATE TABLE, dessutom har den prefixet # vilket betyder att den är temporär (SQL fattar så oroa dig inte) och kommer att liga i tempdb-databasen.

 

Ofta när du jobbar med temp-tabeller behöver du bry dig om DROP iom att detta sker automatiskt (allt fungerar ungefär som när man skapar en variabel i VB eller nåt) men det är aldrig fel att vara noggran, Assumptions is the mother of all ****-ups som jag brukar säga...

 

Nåväl, den lilla SQL-snutten gör:

1) Skapa en liten temp-tabell

2) Gå igenom alla tabeller i aktuell databas och för varje:

3) Kör sp_spaceused och släng in resultatet i temp-tabellen

4) Hämta all info i temp-tabellen sorterat efter tabell-namn

5) Släng bort temp-tabellen

 

/David

 

Link to comment
Share on other sites

patrik.berntsson

Tackar för den kodsnutten. Men om man då skapar denna tabellen så står ju alla storlekar i KB, kommer det alltid göra det oavsett hur stor databasen blir?

 

Link to comment
Share on other sites

Ja, det blir så.

Om du vill meka mer så får du nog skriva själv. Det är inte så svårt egentligen.

 

Du kan tex utgå från sp_spaceused & skriva om den, spara som sysproc och anropa den istället.

 

Eller ta ut koden direkt

 

/David

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...