Tips for DBA: Percentage of work completed for DBA commands

Как вы наверняка знаете, повторное исполнение команды KILL для сеанса показывает процент завершения отката прерванной инструкции. Это замечательная возможность, которая позволяет сберечь нервы администратора баз данных. Однако, есть и другие долгоиграющие команды, процент завершения которых тоже интересно было бы отслеживать. Ну, например, примерно таким же образом, как сообщает о прогрессе своей работы команда BACKUP. Вашему вниманию предлагается сценарий, который позволяет отслеживать прогресс исполнения следующих команд:

  • ALTER INDEX REORGANIZE
  • AUTO_SHRINK с ALTER DATABASE
  • BACKUP DATABASE
  • CREATE INDEX
  • DBCC CHECKDB
  • DBCC CHECKFILEGROUP
  • DBCC CHECKTABLE
  • DBCC INDEXDEFRAG
  • DBCC SHRINKDATABASE
  • DBCC SHRINKFILE
  • KILL (Transact-SQL)
  • RESTORE DATABASE
  • UPDATE STATISTICS

В сценарии использованы следующие административные представления и функции:

Текст сценария:

    -- Процент исполнения длительного запроса ввода-вывода
    SELECT ost.session_id
         , DB_NAME(ISNULL(s.dbid,1)) AS dbname
         , er.command
         , er.percent_complete
         , er.status
         , osth.os_thread_id
         , ost.pending_io_count
         , ost.scheduler_id
         , osth.creation_time
         , ec.last_read
         , ec.last_write
         , s.text
         , owt.exec_context_id
         , owt.wait_duration_ms
         , owt.wait_type
    FROM   master.sys.dm_os_tasks AS ost
    JOIN   master.sys.dm_os_threads AS osth ON ost.worker_address = osth.worker_address
    AND    ost.pending_io_count > 0 AND ost.session_id IS NOT NULL
    JOIN   master.sys.dm_exec_connections AS ec ON ost.session_id = ec.session_id
    CROSS  APPLY master.sys.dm_exec_sql_text(ec.most_recent_sql_handle) AS s
    JOIN   master.sys.dm_os_waiting_tasks AS owt ON ost.session_id = owt.session_id
    AND    owt.wait_duration_ms > 0
    JOIN   master.sys.dm_exec_requests AS er ON ost.session_id = er.session_id
    AND    er.percent_complete > 0
    ORDER BY ost.session_id
    GO

Published Thu, Apr 16 2009 9:31 by gladchenko
Filed under: ,

Comments

# re: Tips for DBA: Percentage of work completed for DBA commands

Для UPDATE STATISTICS почему-то не работает, зато работает с ALTER FULLTEXT CATALOG .. REORGANIZE.

Friday, April 24, 2009 6:29 AM by ak