quinta-feira, 20 de agosto de 2009

Espaço em disco 3

Esta solução realmente é a que eu menos gosto, mas é bastante utilizada por usar a xp_cmdshell.

No exemplo abaixo, utilizando a xp_cmdshell a rotina executa a aplicação DOS fsutil retornando o espaço livre do disco C:. Este retorno é gravado em uma tabela temporária e depois separado e mostrado.


DECLARE @Drive varchar(max),
@SQL VARCHAR(max)

SET @SQL = 'EXEC XP_CMDSHELL "fsutil volume diskfree c:"'


Create Table #tmpLista (xCol VarChar(max))


Insert Into #tmpLista
Exec(@SQL)


Delete #tmpLista Where xCol is null


;WITH tmpDrivers (DadosXML) AS (
SELECT CAST('' + REPLACE(xCol,':','') + '' AS XML)
FROM #tmpLista)
SELECT CAST(DadosXML.query('for $coluna in /N return $coluna/n[1]/text()') AS VARCHAR(80)) As Descricao,
--CAST(DadosXML.query('for $coluna in /N return $coluna/n[last()]/text()') AS VARCHAR(80)) As Tamanho
CAST(DadosXML.query('for $coluna in /N return $coluna/n[2]/text()') AS VARCHAR(80)) As Tamanho
FROM tmpDrivers

Drop Table #tmpLista

Nenhum comentário:

Postar um comentário