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 笔记本电脑上运行它。

进一步的测试让我相信这是一个操作系统特定的问题。其他人在运行 SQL 2012 的 Windows 8.1 上测试了这个脚本,并且在这种情况下它也为 SQL 特定计数器返回 0。

相关内容