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


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 が返されました。

関連情報