Centralized SQL Server 2000 Monitoring
Collecting Free Space Data Stored Procedure
The all-important procedure for going and getting the data using xp_fixeddrives is called GetFreeSpace.
CREATE procedure GetFreeSpace @servername sysname
set nocount on
declare @sql varchar(1000),
select @serverid = ServerID
where Servername = @servername
select @sql = ‘EXEC ‘ + @servername + ‘.master.dbo.xp_fixeddrives’
create table #t1
(drive char(1), freespace int)
insert into #t1 exec(@sql)
insert into ServerFreeSpaceHistory
(ServerID, Drive, Freespace)
select @serverid, Drive, freespace
drop table #t1
You now need to create a job on your central server to execute this procedure in turn for each of your target servers, e.g.:
EXEC GetFreeSpace ‘SERVER1’
EXEC GetFreeSpace ‘SERVER2’
and so on. I run this once a day. As in part 1, you need to ensure your intra-server security is set up and works — and don’t assume that if it when you’re running it in Query Analyzer, it’ll work in SQL Server Agent. Test it first!
Creating a View
To check your most recent free space data, and report on it, you create a view and select from this, so you can see where your problems are.
The view is called “FreeSpaceSummary.”
CREATE VIEW FreeSpaceSummary
convert(decimal,100 * fs.FreeSpace / dc.Capacity) as PercentFree,
FROM OxfamServerFreeSpaceHistory fs
JOIN OxfamServer os
JOIN OxfamServerDriveCapacity dc
AND dc.ServerId = fs.ServerID
If you select from this view like this:
SELECT ServerName, Drive, PercentFree, FreeSpace, Capacity
ORDER BY PercentFree asc
You will see right at the top of the list server drives with the lowest percent of free space. I could have embedded the order by in the view, but I left it out as you may wish to order some other way, e.g., by servername.
As before, I like to embed this SELECT from this view in an active server page for ease of use and ease of sharing. This can be done with ease using the FrontPage wizard in the same way as in the first part of this article, if you are not a confident ASP developer. Sample output is shown here.