【问题标题】:SQL "Log Bytes Flushed/sec" counter from powershell Error来自powershell错误的SQL“日志字节刷新/秒”计数器
【发布时间】:2016-02-28 01:54:24
【问题描述】:

我正在尝试使用以下方法计算我需要的 AZURE SQL 类型:http://dtucalculator.azurewebsites.net/ => http://dtucalculator.azurewebsites.net/Downloads/sql-perfmon.zip

这是一个 PowerShell 脚本,它从 SQL 的某些计数器中获取数据,但在访问当我运行时它在 SQL 中存在的“日志字节刷新/秒”计数器时出错

select *  FROM sys.dm_os_performance_counters where counter_name like 'Log Bytes Flushed/sec%'

我从 PowerShell 得到的错误是:

Get-Counter:在计算机上找不到指定的对象。在 C:\users\ringhel\desktop\sql-perfmon.ps1:47 char:1 + Get-Counter -Counter $counters -SampleInterval 1 -MaxSamples 3600 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidResult: (:) [Get-Counter],异常 + FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand

错误来自这个变量:

$counters = @("\Processor(_Total)\% 处理器时间", "\LogicalDisk(C:)\Disk Reads/sec", "\LogicalDisk(C:)\Disk Writes/sec",

"\LogicalDisk(C:)\Disk Read Bytes/sec", "\LogicalDisk(C:)\Disk Write Bytes/sec", "\SQLSERVER:Databases($DatabaseName)\Log 刷新的字节数/秒")

在网上搜索后,我没有尝试使用 SQLSERVER,而是尝试了 MSSQLSERVER(这是 SQL 服务器的实例名称)、MSSQL'$MSSQLSERVER 和 MSSQL$MSSQLSERVER 但同样的错误。

请帮忙。

【问题讨论】:

  • 在服务器上启动 Perfmon 并找到您想要的计数器,您将看到名称、实例名称等...
  • 我在服务器上启动了 perfmon,这就是我得到的错误消息,即计数器不存在,即使计数器存在于 sql 中,正如我在描述中指出的那样。
  • 我在 perfmon 中找到了计数器,但我仍然得到同样的错误,即使计数器存在

标签: powershell azure azure-sql-database counter azure-performancecounters


【解决方案1】:

发现了问题。 我必须将 LocalMachine 的执行策略设置为 RemoteSigned。它是未定义的。

Set-ExecutionPolicy RemoteSigned -Scope LocalMachine

【讨论】:

    【解决方案2】:

    我的问题略有不同。对于命名实例,我必须像这样定义 SQL Server 计数器:

    \MSSQL`$SQL2016:Databases(_Total)\Log Bytes Flushed/sec
    

    我的实例被命名为“SQL2016”。反引号转义了实例名称中的 $

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 2020-04-08
      • 2019-01-17
      • 1970-01-01
      • 2016-05-15
      • 2015-09-25
      • 2012-03-14
      • 1970-01-01
      • 2019-04-24
      相关资源
      最近更新 更多