Zero Rows ritornano dopo aver interrogato DMV sys.dm_os_performance_counters


9

Ho un utente attivo SQL Server 2014 Standard Edition (RTM)con SYSADMINruolo con Autorizzazioni stato visualizzazione server ma quando eseguo DMV sys.dm_os_performance_countersnon restituisce alcun record.

Qualche idea di cosa c'è che non va nelle autorizzazioni?

inserisci qui la descrizione dell'immagine

Uscita della versione @@:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 20 febbraio 2014 20:04:26 Copyright (c) Microsoft Corporation Standard Edition (64-bit) su Windows NT 6.3 (Build 9600:) (Hypervisor)


È possibile che durante l'installazione i contatori del registro non siano installati. Se l'utente dispone sysadmindell'autorizzazione, non richiede l' view server stateautorizzazione per eseguire il DMV incluso nel ruolo sysadmin. Alla luce di quanto sopra se non viene restituita alcuna riga, ciò significa che i contatori perfmon non sono installati.
Shanky,

@Grazie, non sempre, ci sono altri 2 possibili motivi. Personalmente ho avuto i motivi del registro (in un ambiente di sicurezza
rafforzato in

Risposte:


4

Se sei sicuro che l'utente in questione ha View Server State (e sembra che lo faccia nel tuo screenshot).

Quindi ci sono una serie di ragioni precedentemente inserite in un blog msdn. Che vanno da:

  1. Impostazione degli oggetti prestazioni e dei contatori durante l'installazione di SQL Server non riuscita.
  2. Una miscela di piattaforme a 64 e 32 bit.
  3. Le autorizzazioni del registro sono state distorte

Per risolvere questo problema, possiamo utilizzare gli stessi passaggi indicati nelle linee guida per reinstallare i contatori delle prestazioni in un post di scambio di stack diverso:

Utilizzando un prompt dei comandi dell'amministratore elevato, procedere come segue.

  1. Modificare il percorso nella BINNdirectory dell'istanza di SQL Server che si desidera correggere.
    (Es: C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn)
  2. Eseguire unlodctr <<REGISTERED SERVER NAME>>
    Ad esempio: unlodctr MSSQL$SQL2008oppure SQLAgent$SQL2008...
  3. Eseguire lodctr /T:<<perf-sql* matching the counters you desire to load>>
    Ad esempio: perf-MSSQL$SQL2008sqlctr.inio perf-SQLAgent$SQL2008sqlagtctr.iniper SQLAgent. Il /Tè importante caricare il provider di contatore delle prestazioni di SQL Server come un fornitore di fiducia .
  4. Ciclo del servizio di registro remoto:
    net stop "Remote Registry"quindinet start "Remote Registry"
  5. Forzare una sincronizzazione WMI utilizzando winmgmt /resyncperfctr "<<PID>>"
    dove PID è l'ID del processo WinPriv.exe(è possibile ottenerlo da Task Manager)

Potrebbero essere richiesti anche:

  • Assicurarsi che siano state concesse le autorizzazioni di sicurezza corrette alla HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
    chiave di registro:

    1. Concedere le autorizzazioni di controllo completo all'account del proprietario del creatore.
    2. Concedere le autorizzazioni di controllo completo all'account amministratori.
    3. Concedere le autorizzazioni di lettura agli amministratori SQL su quella casella / nodo.
    4. Concedere le autorizzazioni di controllo completo all'account di sistema

questo metodo è per SQL Server 2008 è lo stesso per il 2014?
AA.SC

@ AA.SC Sì, il metodo non ha modificato AFAIK.
Reagisce il

@@ Reagisce che il client abbia aggiornato il suo sistema RTM a SP1, questo ha risolto il problema.
AA.SC,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.