Template Script: System Proc\sp_DBFileInfo.sql

USE [master]
GO
IF OBJECT_ID('dbo.sp_DBFileInfo') IS NULL
    EXEC ('CREATE PROCEDURE dbo.sp_DBFileInfo AS SELECT 1 AS ID')
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE dbo.sp_DBFileInfo
    @DatabaseIncludeList VARCHAR(MAX) = NULL
AS
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
DECLARE @SQL VARCHAR(MAX)
IF OBJECT_ID('tempdb..##DatabaseFiles') IS NOT NULL
    DROP TABLE ##DatabaseFiles
CREATE TABLE ##DatabaseFiles ([DBName] SYSNAME NOT NULL,
                              [filegroup] SYSNAME NULL,
                              FileName SYSNAME NOT NULL,
                              [physicalname] VARCHAR(260) NOT NULL,
                              [PATH] VARCHAR(260) NULL,
                              [sizegb] NUMERIC(12, 4) NULL,
                              [usedgb] NUMERIC(12, 4) NULL,
                              [freegb] NUMERIC(12, 4) NULL,
                              [freegb%] NUMERIC(12, 4) NULL,
                              Instance VARCHAR(128) NULL)

PRINT 'SELECT * FROM ##DatabaseFiles
'
 ;
WITH    Incl
          AS (SELECT    LTRIM(RTRIM(Field)) AS DBName
              FROM      Util.dbo.ParseDelimited(@DatabaseIncludeList, ','))
    SELECT  @SQL = Util.dbo.StringConcat('
USE '
 + name + '

INSERT ##DatabaseFiles ([Instance], [DBName], [filegroup], FileName, [physicalname], [path], [sizegb], [usedgb], [freegb], [freegb%])
SELECT
    '
 + ISNULL('''' + CAST(SERVERPROPERTY('InstanceName') AS VARCHAR(128)) + '''', 'NULL') + ' AS InstanceName,
    '''
 + name + ''' AS [database],
    fg.name AS filegroup,
    mf.name AS FileName,
    mf.physical_name as physicalname,
    SUBSTRING(mf.physical_name, 1, LEN(mf.physical_name) - CHARINDEX(''\'', REVERSE(mf.physical_name))) AS path,
    CAST(mf.size * 8.0/1024/1024 AS NUMERIC(12,4)) AS sizegb,
    CAST(FILEPROPERTY(mf.name, ''SpaceUsed'')/128.000 / 1024 AS NUMERIC(12,4)) AS usedgb,
    CAST((mf.size - FILEPROPERTY(mf.name, ''SpaceUsed''))/128.000 / 1024 AS NUMERIC(12,4)) AS freegb,
    CAST((mf.size - FILEPROPERTY(mf.name, ''SpaceUsed'')) * 100.00 / mf.size AS NUMERIC(12,4)) AS [freegb%]
FROM ['
 + name + '].sys.database_files mf (NOLOCK)
    LEFT OUTER JOIN ['
 + name + '].sys.data_spaces ds (NOLOCK) ON mf.data_space_id = ds.data_space_id
    LEFT OUTER JOIN ['
 + name + '].sys.filegroups fg (NOLOCK) ON ds.data_space_id = fg.data_space_id
'
, '') + '
SELECT * FROM ##DatabaseFiles'

    FROM    master.sys.databases d (NOLOCK)
    WHERE   (EXISTS ( SELECT    *
                      FROM      Incl
                      WHERE     DBname = d.NAME )
             OR NOT EXISTS ( SELECT *
                             FROM   incl ))
            AND STATE = 0

EXEC(@SQL)
GO
EXEC sys.sp_ms_marksystemobject
    sp_DBFileInfo
GO

Description for Template Script: System Proc\sp_DBFileInfo.sql

Todo
Site Map | Printable View | © 2008 - 2012 NuRoN Consulting, INC | Powered by mojoPortal | HTML 5 | CSS | Original design by Andreas Viklund
Share This Using Popular Bookmarking Services