FREE tutorial,solution,RSS Feeds on Operating Systems, Programming, Web Development, Applications, Databases, Networking, Hardware, Security, SEO Free Expertsforge Membership
Join us as Moderator
Submit Article to Expertsforge.com Submit Article My Expertsforge
 
RSS Feeds, Help Help RSS Feeds
bannertop
 

MS SQL Server Tutorial: Finding free space,free space percentage,total drive size for a server

jawahar
4/6/2006 1:07:51 AM, Views: 1378
The following code creates a stored procedure to calculate the free space,free space percentage plus total drive size for a server.

The stored procedure should be executed as

EXEC PROC sp_diskspace

use master
go

CREATE PROCEDURE sp_diskspace
AS
/*
    Displays the free space,free space percentage
    plus total drive size for a server
*/
SET NOCOUNT ON

DECLARE @hr int
DECLARE @fso int
DECLARE @drive char(1)
DECLARE @odrive int
DECLARE @TotalSize varchar(20)
DECLARE @MB bigint ; SET @MB = 1048576

CREATE TABLE #drives (drive char(1) PRIMARY KEY,
                                 FreeSpace int NULL,
                                 TotalSize int NULL)

INSERT #drives(drive,FreeSpace)
EXEC master.dbo.xp_fixeddrives

EXEC @hr=sp_OACreate 'Scripting.FileSystemObject',@fso OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso

DECLARE dcur CURSOR LOCAL FAST_FORWARD
FOR SELECT drive from #drives
ORDER by drive

OPEN dcur

FETCH NEXT FROM dcur INTO @drive

WHILE @@FETCH_STATUS=0
BEGIN

            EXEC @hr = sp_OAMethod @fso,'GetDrive', @odrive OUT, @drive
            IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso
            
            EXEC @hr = sp_OAGetProperty @odrive,'TotalSize', @TotalSize OUT
            IF @hr <> 0 EXEC sp_OAGetErrorInfo @odrive
                                    
            UPDATE #drives
            SET TotalSize=@TotalSize/@MB
            WHERE drive=@drive
            
            FETCH NEXT FROM dcur INTO @drive

END

CLOSE dcur
DEALLOCATE dcur

EXEC @hr=sp_OADestroy @fso
IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso

SELECT drive,
          FreeSpace as 'Free(MB)',
          TotalSize as 'Total(MB)',
          CAST((FreeSpace/(TotalSize*1.0))*100.0 as int) as 'Free(%)'
FROM #drives
ORDER BY drive

DROP TABLE #drives

RETURN
go
Next Steps:
Add this Tutorial to:
Blink Blink del.icio.ous Del.icio.us Digg Digg
Fark Fark Furl Furl Google Google
Reddit Reddit Simpy Simpy Spurl Spurl
Technorati Technorati Windows Live Win Live Yahoo Yahoo
Rate Me!
Not Yet Rated!
Rate:
Send Private MessageSend Message
Signup / Login To View the Solution or Provide Comments
Post Comment/Solution
Comment:*
        (Link Rules) 
  Use : [bold] for <b>; [/bold] for </b>; [italic] for <i>; [/italic] for </i>; [code] & [/code] for code
 
Categories
Options
MS SQL Server RSS Feed
Most Popular Tutorial
Most Popular Solution
No Records!
Top Rated
Top Rankers
Overall
1. jawahar (100)
2. gravikumar (50)
Yearly -2008
No Rankings!
Expertsforge Sponsors
bnrtop