fazendo algum trabalho com os contadores SQL Perfmon e batendo minha cabeça contra a parede tentando descobrir como traduzir a coluna instance_name para um nome de banco de dados. Então, se eu executar uma consulta como a seguinte
SELECT top 10 left(counter_name, 25), left(instance_name,40), cntr_value
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Log Bytes Received/sec'
Eu recebo um conjunto de resultados como
Bytes de log recebidos/seg _Total 0
Bytes de log recebidos/s 100f6a49-cd58-432a-8680-ed0f1069c5ea 0
Bytes de log recebidos/seg dd7b88c8-43c4-48a8-bf97-e174bb5c5eca 0
Bytes de log recebidos/s 7a0dc4f3-b236-4c0f-b42c-357bfd521b16 0
Bytes de log recebidos/s 5d527545-4bcc-4c66-b315-e1f8fc653245 0
Como faço para traduzir o valor de instance_name (100f6a49-cd58-432a-8680-ed0f1069c5ea) para um database_name Achei que poderia procurar em sys.databases, mas sem sorte
Esse GUID realmente está vinculado à
physical_database_name
coluna emsys.databases
.Dos documentos :
No entanto, olhando para essa coluna no meu próprio banco de dados SQL do Azure, o comportamento é um pouco surpreendente para mim. Eu criei dois bancos de dados SQL no mesmo servidor.
Se eu me conectar
master
e executar a consulta:Todas as três linhas nos resultados (mestre + os dois bancos de dados) têm o mesmo
physical_database_name
(6dfa05ee-9c60-4288-a344-11f9f1459dcc):Quando me conecto a um banco de dados de usuário específico, esse GUID é alterado com base no banco de dados ao qual estou conectado. (Além disso, você não pode ver os bancos de dados do usuário aos quais não está conectado. Essa parte é esperada!)
Não sei por que essa coluna é preenchida com base no contexto atual do banco de dados e não com base na linha. Isso é terrivelmente confuso, se você me perguntar.
Portanto, para correlacionar esse GUID de
sys.dm_os_performance_counters
volta a um banco de dados específico, você precisará se conectar a cada banco de dados, consultar o e,physical_database_name
emsys.databases
seguida, corresponder todos os conjuntos de resultados separados dos bancos de dados separados para mapear o GUID para um nome.