Powershell Get-Counter가 SQL 카운터에 대한 값을 반환하지 않습니다.

Powershell Get-Counter가 SQL 카운터에 대한 값을 반환하지 않습니다.

이것은 dba.stackexchange.com의 교차 게시물입니다.https://dba.stackexchange.com/questions/64898/powershell-get-counter-not-returning-values-for-sql-counters


일부 SQL 카운터를 가져오기 위해 PowerShell을 사용하려고 시도하고 있지만 더 이상 SQL 관련 카운터를 반환하지 않는 것 같습니다. 내 서버에서 무엇이 변경되어 이 문제가 발생했는지 잘 모르겠습니다.

스크립트는 매우 간단합니다. 무엇을 놓치고 있는지 잘 모르겠습니다.

## Define some variables
$serverName = "ISOMORPH" # Server we are collecting from

# Define our list of counters
$counters = @(
    "\Memory\Available MBytes",
    "\Memory\Pages/sec",
    "\PhysicalDisk(_Total)\Avg. Disk sec/Read",
    "\PhysicalDisk(_Total)\Avg. Disk sec/Write",
    "\PhysicalDisk(_Total)\Current Disk Queue Length",
    "\PhysicalDisk(*)\Avg. Disk sec/Read",
    "\PhysicalDisk(*)\Avg. Disk sec/Write",
    "\PhysicalDisk(*)\Current Disk Queue Length",
    "\Process(sqlservr)\% Privileged Time",
    "\Process(sqlservr)\% Processor Time",
    "\Processor(*)\% Privileged Time",
    "\Processor(*)\% Processor Time",
    "\SQLServer:Buffer Manager\Buffer cache hit ratio",
    "\SQLServer:Buffer Manager\Buffer cache hit ratio base",
    "\SQLServer:Buffer Manager\Lazy writes/sec",
    "\SQLServer:Buffer Manager\Page life expectancy",
    "\SQLServer:Memory Manager\Memory Grants Pending" ,
    "\SQLServer:SQL Statistics\Batch Requests/sec",
    "\System\Context Switches/sec",
    "\System\Processor Queue Length" 
)


## Get our performance counter data
Get-Counter -Counter $counters -SampleInterval 1 -MaxSamples 1

스크립트는 모든 카운터를 반환하지만 모든 SQL 카운터는 0 값을 표시합니다. 오류가 발생하지 않고 모든 SQL 카운터의 값이 0인 것으로 표시됩니다.

성능 모니터를 수동으로 열면 이러한 카운터와 값을 볼 수 있습니다. 저는 SQL 2014 Developer Edition이 설치된 Windows 7 노트북에서 이것을 실행하고 있습니다.

추가 테스트를 통해 이것이 OS 관련 문제라고 생각하게 되었습니다. 다른 사람이 SQL 2012를 실행하는 Windows 8.1에서 이 스크립트를 테스트했으며 이 경우에도 SQL 특정 카운터에 대해 0을 반환합니다.

관련 정보