• Hi Tim,

    I added a check to your code to skip off-line databases. Here is the original section of code:

    --Begin our maintenance tasks.

    DECLARE curDatabase CURSOR FOR

    --This statement filters out system databases and databases with open cursors.

    SELECT NAME

    FROM sys.sysdatabases

    WHERE DBID > 4 AND dbid NOT IN (

    SELECTDISTINCT PRO.dbid

    FROM sys.dm_exec_cursors(0) CURS INNER JOIN sys.sysprocesses PRO

    ON CURS.session_ID = PRO.spid

    WHERE is_open =1

    )

    AND dbid NOT IN (

    SELECT DISTINCT SP.[dbid]

    FROM sys.sysprocesses SP CROSS APPLY sys.dm_exec_sql_text(sql_handle)

    WHERE [TEXT] LIKE 'FETCH%'

    )

    ORDER BY NAME

    OPEN curDatabase

    And here is the code with the added check.

    --Begin our maintenance tasks.

    DECLARE curDatabase CURSOR FOR

    --This statement filters out system databases and databases with open cursors.

    -- 2014-04-08 Tom Uellner: Added check for sys.databases [state] > 0 (database must be online)

    SELECT NAME

    FROM sys.sysdatabases

    WHERE DBID > 4 AND dbid NOT IN (

    SELECTDISTINCT PRO.dbid

    FROM sys.dm_exec_cursors(0) CURS INNER JOIN sys.sysprocesses PRO

    ON CURS.session_ID = PRO.spid

    WHERE is_open =1

    )

    AND dbid NOT IN (

    SELECT DISTINCT SP.[dbid]

    FROM sys.sysprocesses SP CROSS APPLY sys.dm_exec_sql_text(sql_handle)

    WHERE [TEXT] LIKE 'FETCH%'

    )

    AND dbid NOT IN (

    SELECT database_id

    FROM sys.databases

    WHERE [state] > 0

    )

    ORDER BY NAME

    OPEN curDatabase

    -Tom