Нулевые строки возвращаются при запросе DMV sys.dm_os_performance_counters

9

У меня есть пользователь SQL Server 2014 Standard Edition (RTM)с SYSADMINролью с правами на просмотр состояния сервера, но когда я выполняю DMV, sys.dm_os_performance_countersон не возвращает никаких записей.

Есть идеи, что не так с разрешениями?

введите описание изображения здесь

Выход @@ версии:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 20 февраля 2014 г. 20:04:26 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) в Windows NT 6.3 (сборка 9600:) (гипервизор)

AA.SC
источник
Вполне возможно, что во время установки счетчики реестра не установлены. Если у пользователя есть sysadminразрешение, он не требует view server stateразрешения для запуска DMV, включенной в роль sysadmin. В свете вышесказанного, если строки не возвращаются, это означает, что счетчики perfmon не установлены.
Шэнки
@Shanky Не всегда, есть еще 2 возможные причины. У меня лично были причины реестра (в усиленной среде безопасности, где, по-видимому, изменения реестра во время установки не проходили должным образом)
Reaces

Ответы:

4

Если вы уверены, что у пользователя есть вопрос View Server State(и на вашем снимке экрана он выглядит так).

Тогда есть много причин, ранее помещенных в блог msdn. Начиная от:

  1. Производительность Объекты и счетчики, установленные во время установки SQL Server, не выполнены.
  2. Смесь 64 и 32 битных платформ.
  3. Разрешения реестра были искажены

Чтобы решить эту проблему, мы можем использовать те же шаги, которые описаны в рекомендациях по переустановке счетчиков производительности в другой публикации обмена стека:

Используя командную строку администратора с повышенными правами, выполните следующие действия.

  1. Измените путь к BINNкаталогу экземпляра SQL Server, который вы хотите исправить.
    (Пример: C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn)
  2. Выполнить unlodctr <<REGISTERED SERVER NAME>>
    Например: unlodctr MSSQL$SQL2008или SQLAgent$SQL2008...
  3. Выполнить lodctr /T:<<perf-sql* matching the counters you desire to load>>
    Например: perf-MSSQL$SQL2008sqlctr.iniили perf-SQLAgent$SQL2008sqlagtctr.iniдля SQLAgent. /TВажно загрузить поставщик счетчика производительности SQL Server в качестве надежного поставщика .
  4. Цикл службы удаленного реестра:
    net stop "Remote Registry"затемnet start "Remote Registry"
  5. Принудительная синхронизация WMI, winmgmt /resyncperfctr "<<PID>>"
    где PID - это идентификатор процесса WinPriv.exe(вы можете получить это из диспетчера задач)

Может также потребоваться следующее:

  • Убедитесь, что для HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
    раздела реестра предоставлены правильные разрешения безопасности :

    1. Предоставьте полный доступ к учетной записи Владельца-Создателя.
    2. Предоставьте полный доступ к учетной записи администратора.
    3. Предоставьте разрешения на чтение администраторам SQL в этом поле / узле.
    4. Предоставьте разрешения «Полный доступ» системной учетной записи
Reaces
источник
этот метод для SQL Server 2008 это то же самое для 2014?
AA.SC
@ AA.SC Да, метод не изменился AFAIK.
Reaces
Клиент @@ Reaces обновил свою RTM системы до SP1, что решило проблему.
AA.SC