none
Ultimo uso de uma base RRS feed

  • Pergunta

  • Olá,

     

    Eu preciso das informações de quando todas as bases foram usadas pela ultima vez (entenda usadas por, no minimo, alguem se conectou nela). Cheguei a reunir algumas informações aqui, mas travei pelo fato de nao saber o quao verdade são essas informações, e outra, eu precisaria apenas da ultima data, da mais atual, ai travei tambem na logica da query =\

     

    select b.name, max(a.last_user_seek) as Procura, max(a.last_user_scan) as Scan, max(a.last_user_lookup) As [select], max(a.last_user_update) as [Update]

    from sys.dm_db_index_usage_stats a

    inner join sys.databases b

    on (a.database_id=b.database_id)

    group by b.name



    Alguem sabe como eu consigo essas informações?


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    • Movido Gustavo Maia Aguiar quarta-feira, 2 de fevereiro de 2011 04:09 (De:SQL Server - Desenvolvimento Geral)
    terça-feira, 1 de fevereiro de 2011 15:15
    Moderador

Respostas

  • Capuofa,

    O melhor caminho se  usa o SQL 2008 é o Audit, fora isto será sys.dm_db_index_usage_stats ou Trace

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    terça-feira, 1 de fevereiro de 2011 16:16
    Moderador

Todas as Respostas

  • Capuofa,

    O melhor caminho se  usa o SQL 2008 é o Audit, fora isto será sys.dm_db_index_usage_stats ou Trace

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    terça-feira, 1 de fevereiro de 2011 16:16
    Moderador
  • Marcelo,

     

    Obrigado, eu criei uma query, não é EXATAMENTE a que preciso, todo caso, ira servir, uma vez que rodo ela num power shell para um servidor central de gerenciamento, eu criei uma tabela e antes de coletar os dados, eu do um truncate na mesma, e faço o insert pelo proprio PS.

     

    create procedure dbo.db_last_used as

    begin

    SELECT DB_NAME(database_id), LastRead = MAX(CASE

    WHEN last_user_seek > last_user_scan AND last_user_seek > last_user_lookup

    THEN last_user_seek

    WHEN last_user_scan > last_user_seek AND last_user_scan > last_user_lookup

    THEN last_user_scan

    ELSE last_user_lookup

    END

    ), LastWrite = MAX(last_user_update) FROM

    (

    SELECT

    database_id,

    last_user_seek = COALESCE(last_user_seek, '19000101'),

    last_user_scan = COALESCE(last_user_scan, '19000101'),

    last_user_lookup = COALESCE(last_user_lookup, '19000101'),

    last_user_update = COALESCE(last_user_update, '19000101')

    FROM sys.dm_db_index_usage_stats

    ) x

    GROUP BY DB_NAME(database_id)

    ORDER BY 1;

    end


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    terça-feira, 1 de fevereiro de 2011 16:33
    Moderador