
這是來自 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 筆記型電腦上執行此程式。
進一步的測試使我相信這是作業系統特定的問題。其他人在執行 SQL 2012 的 Windows 8.1 上測試了此腳本,在這種情況下,它也為 SQL 特定計數器傳回 0。