无法使用 c# 获取特定于 SSAS 的性能计数器类别

Posted

技术标签:

【中文标题】无法使用 c# 获取特定于 SSAS 的性能计数器类别【英文标题】:Not able to get SSAS specific performance counter categories with c# 【发布时间】:2014-10-07 07:54:28 【问题描述】:

我想检索 SSAS 服务的性能计数器。我可以在我的 perfmon 中看到这些计数器,它们分布在多个类别中。我还检查了我的注册表项并找到了这些计数器。但我无法使用 C# 检索这些计数器。

这是我正在使用的示例代码 sn-p-

foreach (PerformanceCounterCategory pcc in PerformanceCounterCategory.GetCategories())

     if (pcc.CategoryName.StartsWith("MSOLAP"))
     
         Console.WriteLine(pcc.CategoryName);
     

注意

在我的 Perfmon 中,我可以看到计数器类别

MSOLAP$Marsh:连接 MSOLAP$Marsh:锁 MSOLAP$Marsh:内存等

是否可以在两个地方看到两个不同的计数器列表,即在 perfmon 和 C# 中(PerformanceCounterCategory 类)

是否有任何 SSAS 的现有 WMI 类可用于检索这些计数器。

【问题讨论】:

【参考方案1】:

64 位环境中的 SSAS 仅安装 64 位计数器的库,因此, 如果您从 32 位应用程序运行代码,或者您使用的是 32 位版本 Windows PerfMon,您无法访问这些计数器。

在 64 位平台上,您拥有两个版本的 Windows Perfmon。

32 位 -> C:\Windows\SysWOW64\perfmon.exe 64 位 -> C:\Windows\System32\perfmon.exe

解决方案是使用 x64 作为目标平台来构建您的应用程序。

【讨论】:

以上是关于无法使用 c# 获取特定于 SSAS 的性能计数器类别的主要内容,如果未能解决你的问题,请参考以下文章

从非特定 .NET 应用程序引用特定于平台的库

什么是性能计数器?

C# 编译器错误:无法转换 lambda 表达式

C# 不提供 Windows 性能计数器(在 Azure 辅助角色上)

使用特定于列的重复过滤器在 Python 中将行附加到 CSV

如何为 dotenv 获取特定于环境的 .env 文件(在 Laravel 5 中)