Temos vários bancos de dados, todos com o mesmo esquema para cada cliente. Eu queria saber se havia uma consulta que poderia selecionar count(*),db_name do grupo somesysview por db_name;
De um ângulo diferente, a mesma consulta dividida por usuário?
Você pode usar sys.dm_exec_sessions . Isso fornecerá apenas a contagem com base na atividade atual. Você precisaria armazenar isso historicamente se quisesse fazer uma tendência. Lembre-se de que os IDs de sessão de 50 ou menos são sessões do sistema.
Eu usaria uma sessão de eventos estendidos e um alvo de histograma para isso:
O que você obterá é uma contagem de consultas (instruções iniciando eventos) agrupadas por database_name. Mantenha-o em execução por um período de tempo significativo e você obterá números realistas de uso do banco de dados.
Dependendo do comportamento da aplicação, uma sessão existente não é suficiente para dizer o quanto o banco de dados é usado: algumas aplicações fecham a conexão com o banco de dados após cada interação, outras a mantêm aberta o tempo todo (pooling de conexão é um bom exemplo ). Portanto, ver uma sessão aberta ociosa no banco de dados não é uma boa indicação da quantidade de atividade em andamento.
Você também pode consultar o cache do plano para ter uma ideia da atividade de consulta em diferentes bancos de dados.