이것은 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을 반환합니다.