Cero filas devuelven al consultar DMV sys.dm_os_performance_counters


9

Tengo un usuario SQL Server 2014 Standard Edition (RTM)con un SYSADMINrol con Permisos de estado de vista del servidor, pero cuando ejecuto DMV sys.dm_os_performance_countersno devuelve ningún registro.

¿Alguna idea de lo que está mal con los permisos?

ingrese la descripción de la imagen aquí

Salida de la versión @@:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 20 de febrero de 2014 20:04:26 Copyright (c) Microsoft Corporation Standard Edition (64 bits) en Windows NT 6.3 (Build 9600:) (Hypervisor)


Es muy posible que durante la instalación los contadores de registro no estén instalados. Si el usuario tiene sysadminpermiso, no necesita view server statepermiso para ejecutar el DMV incluido en el rol sysadmin. A la luz de lo anterior, si no se devuelven filas, esto significa que los contadores de perfmon no están instalados.
Shanky

@Shanky No siempre, hay 2 razones más posibles. He tenido personalmente las razones del registro (en un entorno de seguridad endurecida donde al parecer los cambios en el registro durante la instalación no van adecuadamente a través de)
Reaces

Respuestas:


4

Si está seguro de que el usuario en cuestión tiene View Server State(y parece que en su captura de pantalla lo hace).

Luego hay una serie de razones previamente puestas en un blog msdn. Que van desde:

  1. Falló la configuración de los objetos de rendimiento y los contadores durante la instalación de SQL Server.
  2. Una mezcla de plataformas de 64 y 32 bits.
  3. Los permisos de registro han sido sesgados

Para resolver esto, podemos usar los mismos pasos descritos en las pautas para reinstalar los contadores de rendimiento en una publicación de intercambio de pila diferente:

Con un símbolo del sistema de administrador elevado, realice los siguientes pasos.

  1. Cambie la ruta al BINNdirectorio de la instancia de SQL Server que desea corregir.
    (Ex: C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn)
  2. Ejecutar unlodctr <<REGISTERED SERVER NAME>>
    Por ejemplo: unlodctr MSSQL$SQL2008o SQLAgent$SQL2008...
  3. Ejecutar lodctr /T:<<perf-sql* matching the counters you desire to load>>
    Por ejemplo: perf-MSSQL$SQL2008sqlctr.inio perf-SQLAgent$SQL2008sqlagtctr.inipara SQLAgent. El /Tes importante cargar el proveedor de contadores de rendimiento de SQL Server como un proveedor de confianza .
  4. Ciclo del servicio de registro remoto:
    net stop "Remote Registry"luegonet start "Remote Registry"
  5. Forzar una sincronización WMI usando winmgmt /resyncperfctr "<<PID>>"
    donde PID es la identificación del proceso del WinPriv.exe(puede obtener esto desde el Administrador de tareas)

También se puede requerir lo siguiente:

  • Asegúrese de que se hayan otorgado los permisos de seguridad correctos a la HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
    clave de registro:

    1. Otorgue permisos de Control total a la cuenta Creador Propietario.
    2. Otorgue permisos de Control total a la cuenta de Administradores.
    3. Otorgue permisos de lectura a los administradores de SQL en ese cuadro / nodo.
    4. Conceder permisos de control total a la cuenta del sistema

Este método es para SQL Server 2008 ¿Es esto lo mismo para 2014?
AA.SC

@ AA.SC Sí, el método no ha cambiado AFAIK.
Recibe el

@@ Reaces cliente actualizó su sistema RTM a SP1, esto ha resuelto el problema.
AA.SC
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.