来自powershell错误的SQL“日志字节刷新/秒”计数器

Posted

技术标签:

【中文标题】来自powershell错误的SQL“日志字节刷新/秒”计数器【英文标题】:SQL "Log Bytes Flushed/sec" counter from powershell Error 【发布时间】: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 中找到了计数器,但我仍然得到同样的错误,即使计数器存在 【参考方案1】:

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

Set-ExecutionPolicy RemoteSigned -Scope LocalMachine

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于来自powershell错误的SQL“日志字节刷新/秒”计数器的主要内容,如果未能解决你的问题,请参考以下文章

powershell PowerShell:来自InnerException的错误消息

用于验证 sql 语法错误的 Powershell 脚本

powershell PowerShell:读取SQL错误日志

带有 Git 命令错误处理的 Powershell - 在来自外部程序的非零退出代码时自动中止

为啥安装sql Server 2008时总是显示windows powershell错误?

来自 PowerShell 的 REST API -“不允许使用 POST 方法”