![Powershell Get-Counter が SQL カウンターの値を返さない](https://rvso.com/image/632754/Powershell%20Get-Counter%20%E3%81%8C%20SQL%20%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%83%BC%E3%81%AE%E5%80%A4%E3%82%92%E8%BF%94%E3%81%95%E3%81%AA%E3%81%84.png)
これは dba.stackexchange.com からのクロスポストです:https://dba.stackexchange.com/questions/64898/powershell-get-counter-not-returning-values-for-sql-counters
PowerShell を使用していくつかの SQL カウンターを取得しようとしていますが、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 が返されました。