0

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

这是一个 PowerShell 脚本,它从 SQL 的某些计数器中获取数据,但是在访问“Log Bytes Flushed/sec”计数器时出错,当我运行时它在 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 Bytes Flushed/sec")

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

请帮忙。

4

2 回答 2

1

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

Set-ExecutionPolicy RemoteSigned -Scope LocalMachine

于 2016-02-28T11:28:05.213 回答
0

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

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

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

于 2019-07-18T14:32:49.957 回答