views:

783

answers:

2

I want to be able to find out how much space is left in my database files so that I can know when to increase the space so it doesn't do it when the application is running hard out.

I would prefer to be able to script this so I can run it across multiple databases ion a regular basis.

I have SQL Server 2000 and SQL Server 2005 databases but I would prefer to be able to run the same script across both.

I can use Management Studio to do this manually on 2005 databases, but not on the 2000 databases.

A: 

For me, sql server always automatically allocated more space until the harddrive was full, so just query the free space on the harddrive.

What settings do you use that you have to increase the "space" of a database?

Christian
SQL Server maintains unused space within its data files. When that free space runs out, SQL Server will grow the file to accommodate. Database performance could be affected during that growth. I typically set the auto-grow size to something reasonable, given my data, and let it go at that.
Michael Petrotta
+1  A: 

Try sp_spaceused:

Displays the number of rows, disk space reserved, and disk space used by a table, indexed view, or Service Broker queue in the current database, or displays the disk space reserved and used by the whole database.

I believe that this was present in SQL Server 2000, but I can't prove it. It works in 2005 and 2008.

And you can peek at it with sp_helptext, if you want to tie it into some server-side logic.

EDIT: expanding on my comment below, and with thanks to the original contributor at http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=82359, here's a way to break down usage by file:

select
      name
    , filename
    , convert(decimal(12,2),round(a.size/128.000,2)) as FileSizeMB
    , convert(decimal(12,2),round(fileproperty(a.name,'SpaceUsed')/128.000,2)) as SpaceUsedMB
    , convert(decimal(12,2),round((a.size-fileproperty(a.name,'SpaceUsed'))/128.000,2)) as FreeSpaceMB
from dbo.sysfiles a
Michael Petrotta
Is there something similar to get free space in database files?
GordyII
The data you want is is dbo.sysfiles. Try the statement at the end of this thread: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=82359
Michael Petrotta