Zero linhas retornam ao consultar DMV sys.dm_os_performance_counters

9

Eu tenho um usuário SQL Server 2014 Standard Edition (RTM)com SYSADMINfunção com permissões de estado de exibição do servidor, mas quando executo o DMV, sys.dm_os_performance_countersele não retorna nenhum registro.

Alguma idéia do que há de errado com permissões?

insira a descrição da imagem aqui

Saída da versão @@:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 20 de fevereiro de 2014 20:04:26 Direitos autorais (c) Microsoft Corporation Standard Edition (64 bits) no Windows NT 6.3 (Build 9600:) (Hypervisor)

AA.SC
fonte
É bem possível que durante a instalação os contadores de registro não estejam instalados. Se o usuário tiver sysadminpermissão, ele não precisará de view server statepermissão para executar o DMV, que está incluído na função sysadmin. À luz do acima, se nenhuma linha for retornada, isso significa que os contadores perfmon não estão instalados.
Shanky
@ Shanky Nem sempre, existem mais duas razões possíveis. Eu pessoalmente tinha as razões de registro (em um ambiente de segurança endurecido, onde aparentemente as alterações de registo durante a instalação não corretamente passar)
Reaces

Respostas:

4

Se você tem certeza de que o usuário em questão possui View Server State(e parece que ele está na sua captura de tela).

Existem várias razões anteriormente colocadas em um blog msdn. Variando de:

  1. Falha na configuração de objetos de desempenho e contadores durante a instalação do SQL Server.
  2. Uma mistura de plataformas de 64 e 32 bits.
  3. Permissões de registro foram distorcidas

Para resolver isso, podemos usar as mesmas etapas descritas nas diretrizes para reinstalar os contadores de desempenho em uma postagem de troca de pilhas diferente:

Usando um prompt de comando do administrador elevado, execute as seguintes etapas.

  1. Altere o caminho para o BINNdiretório da instância do SQL Server que você deseja corrigir.
    (Ex: C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn)
  2. Executar unlodctr <<REGISTERED SERVER NAME>>
    Por exemplo: unlodctr MSSQL$SQL2008ou SQLAgent$SQL2008...
  3. Executar lodctr /T:<<perf-sql* matching the counters you desire to load>>
    Por exemplo: perf-MSSQL$SQL2008sqlctr.iniou perf-SQLAgent$SQL2008sqlagtctr.inipara SQLAgent. A /Té importante para carregar o provedor de contador de desempenho do SQL Server como um provedor confiável .
  4. Ciclo do serviço de registro remoto:
    net stop "Remote Registry"em seguida,net start "Remote Registry"
  5. Forçar uma sincronização WMI usando winmgmt /resyncperfctr "<<PID>>"
    onde PID é a identificação do processo WinPriv.exe(você pode obter isso no Gerenciador de tarefas)

Também pode ser necessário o seguinte:

  • Verifique se as permissões de segurança corretas foram concedidas à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
    chave do Registro:

    1. Conceda permissões de Controle Total à conta do Proprietário Criador.
    2. Conceda permissões de Controle Total à conta de Administradores.
    3. Conceda permissões de leitura aos administradores do SQL nessa caixa / nó.
    4. Conceder permissões de controle total à conta do sistema
Reaces
fonte
esse método é para o SQL Server 2008 é o mesmo para 2014?
AA.SC
@ AA.SC Sim, o método não mudou o AFAIK.
Reace em 01/09/2015
@@ O cliente Reaces atualizou seu sistema RTM para o SP1. Isso resolveu o problema.
AA.SC