Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
chander_2580
Yak Posting Veteran
76 Posts |
Posted - 2008-03-09 : 16:37:51
|
Hi Gurus ...please tell the way to know total space and free space available on servers hard disk with the help of query analyser. I have tryed xp_fixeddrives but this will return only the free space ... i wanna know full capacity of the disk alonghwith free space available on the disk. please help me out.Thanks & RegardsChander |
|
sodeep
Master Smack Fu Yak Hacker
7174 Posts |
Posted - 2008-03-09 : 17:03:44
|
You can use this procedure:SET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS OFFGOcreate PROCEDURE sp_diskspaceASSET NOCOUNT ONDECLARE @hr intDECLARE @fso intDECLARE @drive char(1)DECLARE @odrive intDECLARE @TotalSize varchar(20) DECLARE @MB Numeric ; SET @MB = 1048576CREATE TABLE #drives (drive char(1) PRIMARY KEY, FreeSpace int NULL,TotalSize int NULL) INSERT #drives(drive,FreeSpace) EXECmaster.dbo.xp_fixeddrives EXEC @hr=sp_OACreate'Scripting.FileSystemObject',@fso OUT IF @hr <> 0 EXEC sp_OAGetErrorInfo@fsoDECLARE dcur CURSOR LOCAL FAST_FORWARDFOR SELECT drive from #drives ORDER by driveOPEN dcur FETCH NEXT FROM dcur INTO @driveWHILE @@FETCH_STATUS=0BEGINEXEC @hr = sp_OAMethod @fso,'GetDrive', @odrive OUT, @driveIF @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 WHEREdrive=@drive FETCH NEXT FROM dcur INTO @driveEndClose dcurDEALLOCATE dcurEXEC @hr=sp_OADestroy @fso IF @hr <> 0 EXEC sp_OAGetErrorInfo @fsoSELECTdrive, TotalSize as 'Total(MB)',FreeSpace as 'Free(MB)',CAST((FreeSpace/(TotalSize*1.0))*100.0 as int) as 'Free(%)' FROM #drivesORDER BY drive DROP TABLE #drives ReturnGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGO Exec sp_diskspacego |
 |
|
chander_2580
Yak Posting Veteran
76 Posts |
Posted - 2008-03-09 : 17:12:26
|
thanks a lot bro ... its really working fine.Thanks alotchander shekhar quote: Originally posted by sodeep You can use this procedure:SET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS OFFGOcreate PROCEDURE sp_diskspaceASSET NOCOUNT ONDECLARE @hr intDECLARE @fso intDECLARE @drive char(1)DECLARE @odrive intDECLARE @TotalSize varchar(20) DECLARE @MB Numeric ; SET @MB = 1048576CREATE TABLE #drives (drive char(1) PRIMARY KEY, FreeSpace int NULL,TotalSize int NULL) INSERT #drives(drive,FreeSpace) EXECmaster.dbo.xp_fixeddrives EXEC @hr=sp_OACreate'Scripting.FileSystemObject',@fso OUT IF @hr <> 0 EXEC sp_OAGetErrorInfo@fsoDECLARE dcur CURSOR LOCAL FAST_FORWARDFOR SELECT drive from #drives ORDER by driveOPEN dcur FETCH NEXT FROM dcur INTO @driveWHILE @@FETCH_STATUS=0BEGINEXEC @hr = sp_OAMethod @fso,'GetDrive', @odrive OUT, @driveIF @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 WHEREdrive=@drive FETCH NEXT FROM dcur INTO @driveEndClose dcurDEALLOCATE dcurEXEC @hr=sp_OADestroy @fso IF @hr <> 0 EXEC sp_OAGetErrorInfo @fsoSELECTdrive, TotalSize as 'Total(MB)',FreeSpace as 'Free(MB)',CAST((FreeSpace/(TotalSize*1.0))*100.0 as int) as 'Free(%)' FROM #drivesORDER BY drive DROP TABLE #drives ReturnGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGO Exec sp_diskspacego
|
 |
|
|
|
|
|
|