SQL Server – Pesquisa de HD (total/livre/%)

Segue abaixo um script que retorna a letra do disco, o total do mesmo (GB), total livre(GB) e a porcentagem utilizada.

GO
sp_configure 'show advanced options', 1  
GO   
RECONFIGURE  
GO  
sp_configure 'Ole Automation Procedures', 1  
GO   
RECONFIGURE  
GO   
sp_configure 'show advanced options', 1  
GO   
RECONFIGURE
DECLARE
     @hr        int
    ,@fso       int
    ,@drive     char(1)
    ,@odrive    int
    ,@TotalSize varchar(20) 
    ,@MB        numeric
     
Set @MB = 1048576
     
CREATE TABLE #Drives(
     Drive      char(1)         PRIMARY KEY
    ,FreeSpace  decimal(12,2)   NULL
    ,TotalSize  decimal(12,2)   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
            ,Convert(decimal(12,2), (TotalSize / 1024)) As 'Total(GB)'
            ,Convert(decimal(12,2), (FreeSpace / 1024)) As 'Free(GB)'
            ,Convert(decimal(12,2),(100 - (100 * FreeSpace) / TotalSize)) As 'Usage %'
        FROM
            #Drives 
        ORDER BY
            'Usage %' DESC--Drive 
             
DROP TABLE #drives 

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s