• More details on the status of the databases, including database status, recovery model, log reuse status...

    IF OBJECT_ID('tempdb.dbo.#stage') IS NOT NULL

    DROP TABLE #stage ;

    IF OBJECT_ID('tempdb.dbo.#results') IS NOT NULL

    DROP TABLE #results ;

    IF OBJECT_ID('tempdb.dbo.#logspace') IS NOT NULL

    DROP TABLE #logspace ;

    GO

    CREATE TABLE #stage

    ( RecoveryUnitId INT

    , FileID INT

    , FileSize BIGINT

    , StartOffset BIGINT

    , FSeqNo BIGINT

    , [Status] INT

    , Parity INT

    , CreateLSN NUMERIC(38)

    ) ;

    GO

    CREATE TABLE #results

    ( DatabaseName SYSNAME

    , VLF_count INT

    , [Status] INT

    ) ;

    GO

    CREATE TABLE #logspace

    ( DatabaseName SYSNAME

    , [LogSize(MB)] NVARCHAR(127)

    , [LogSpaceUsed(%)] NVARCHAR(127)

    , [Status] INT

    );

    GO

    EXEC sp_MSforeachdb

    N'USE [?];

    INSERT INTO #stage

    EXEC sp_executesql N''DBCC LogInfo([?])'';

    INSERT INTO #results

    SELECT DB_NAME(), COUNT(*), [Status]

    FROM #stage

    GROUP BY [Status];

    TRUNCATE TABLE #stage;'

    INSERT INTO #logspace

    EXEC sp_executesql N'DBCC SQLPERF(logspace);'

    GO

    SELECT s.DatabaseName, s.[LogSize(MB)], s.[LogSpaceUsed(%)]

    , CASE c.[Status] WHEN 0 THEN N'Available for overwrite/reuse' WHEN 2 THEN N' ** Active Tlog (cant be overwritten)' ELSE CAST(c.[Status] AS NVARCHAR(10)) END AS [StatusDescr]

    , c.VLF_count

    , d.user_access_desc

    , d.state_desc

    , d.recovery_model_desc

    , d.log_reuse_wait_desc

    FROM #logspace as

    JOIN #results as [c] ON s.DatabaseName = c.DatabaseName

    JOIN master.sys.databases as [d] ON c.DatabaseName = d.name

    ORDER BY CAST([LogSize(MB)] AS NUMERIC(38)) DESC, c.[Status] DESC

    GO