Bei der Abfrage von DMV sys.dm_os_performance_counters werden keine Zeilen zurückgegeben

9

Ich habe einen Benutzer SQL Server 2014 Standard Edition (RTM)mit einer SYSADMINRolle mit Server View-Statusberechtigungen, aber wenn ich DMV ausführe sys.dm_os_performance_counters, wird kein Datensatz zurückgegeben.

Irgendeine Idee, was mit Berechtigungen nicht stimmt?

Geben Sie hier die Bildbeschreibung ein

Ausgabe von @@ Version:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 20. Februar 2014 20:04:26 Copyright (c) Microsoft Corporation Standard Edition (64-Bit) unter Windows NT 6.3 (Build 9600 :) (Hypervisor)

AA.SC
quelle
Es ist durchaus möglich, dass während der Installation die Registrierungszähler nicht installiert werden. Wenn der Benutzer über die sysadminBerechtigung verfügt, benötigt er keine view server stateBerechtigung zum Ausführen der in der Sysadmin-Rolle enthaltenen DMV. In Anbetracht des oben Gesagten bedeutet dies, dass keine Perfmon-Zähler installiert sind, wenn keine Zeilen zurückgegeben werden.
Shanky
@ Shanky Nicht immer gibt es zwei weitere mögliche Gründe. Ich persönlich hatte die Registrierungsgründe (in einer gehärteten Sicherheitsumgebung, in der anscheinend die Registrierungsänderungen während der Installation nicht ordnungsgemäß durchgeführt wurden)
Reaces

Antworten:

4

Wenn Sie sicher sind, dass der betreffende Benutzer dies getan hat View Server State(und es sieht so aus, als ob er es in Ihrem Screenshot tut).

Dann gibt es eine Reihe von Gründen, die zuvor in einen msdn-Blog aufgenommen wurden. Von:

  1. Die Einrichtung von Leistungsobjekten und Leistungsindikatoren während der SQL Server-Installation ist fehlgeschlagen.
  2. Eine Mischung aus 64- und 32-Bit-Plattformen.
  3. Die Registrierungsberechtigungen wurden verzerrt

Um dies zu beheben, können wir dieselben Schritte ausführen, die in den Richtlinien für die Neuinstallation der Leistungsindikatoren in einem anderen Stapelaustauschbeitrag beschrieben sind:

Führen Sie die folgenden Schritte aus, indem Sie eine Eingabeaufforderung mit erhöhtem Administrator verwenden.

  1. Ändern Sie den Pfad in das BINNVerzeichnis der SQL Server-Instanz, die Sie korrigieren möchten.
    (Ex: C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn)
  2. Ausführen unlodctr <<REGISTERED SERVER NAME>>
    Zum Beispiel: unlodctr MSSQL$SQL2008oder SQLAgent$SQL2008...
  3. Ausführen lodctr /T:<<perf-sql* matching the counters you desire to load>>
    Zum Beispiel: perf-MSSQL$SQL2008sqlctr.inioder perf-SQLAgent$SQL2008sqlagtctr.inifür SQLAgent. Es /Tist wichtig, den SQL Server-Leistungsindikatoranbieter als vertrauenswürdigen Anbieter zu laden .
  4. Schalten Sie den Remote-Registrierungsdienst aus:
    net stop "Remote Registry"dannnet start "Remote Registry"
  5. Erzwingen Sie eine WMI-Synchronisierung unter Verwendung von winmgmt /resyncperfctr "<<PID>>"
    PID als Prozess-ID von WinPriv.exe(Sie können dies vom Task-Manager erhalten).

Folgendes kann ebenfalls erforderlich sein:

  • Stellen Sie sicher, dass dem HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
    Registrierungsschlüssel die richtigen Sicherheitsberechtigungen erteilt wurden :

    1. Gewähren Sie dem Creator Owner-Konto Vollzugriffsberechtigungen.
    2. Gewähren Sie dem Administratorkonto Vollzugriffsberechtigungen.
    3. Gewähren Sie den SQL-Administratoren Leseberechtigungen für dieses Feld / diesen Knoten.
    4. Gewähren Sie dem Systemkonto Vollzugriffsberechtigungen
Reagiert
quelle
Diese Methode ist für SQL Server 2008 ist das gleiche für 2014?
AA.SC
@ AA.SC Ja, die Methode hat AFAIK nicht geändert.
Reagiert
@@ Reaces Client hat sein System RTM auf SP1 aktualisiert. Dadurch wurde das Problem behoben.
AA.SC