对服务器运行检查
Import-Module dbatools
Import-Module dbachecks
$Server = "AMCB123"
$Database = "DBA"
# Create recordset of servers to evaluate
$sconn = new-object System.Data.SqlClient.SqlConnection("server=$Server;Trusted_Connection=true");
$q = "SELECT DISTINCT servername FROM DBA.[dbo].[Server_Group] WHERE ID =1;"
$sconn.Open()
$cmd = new-object System.Data.SqlClient.SqlCommand ($q, $sconn);
$cmd.CommandTimeout = 0;
$dr = $cmd.ExecuteReader();
# Loop through the servers and build an array
while ($dr.Read()) {
Get-DbaMaxMemory -SqlServer $dr.GetValue(0) | Format-Table
}
$dr.Close()
$sconn.Close()我已经按组在表中列出了sql server(阶段、生产、DR服务器),现在我想将这些服务器与组id进行比较,以检查具有相同组id的服务器(阶段、生产、DR)是否具有相同的MAXMemory配置。
为此,我正在使用下面的powershell脚本,你能帮我吗?我已经创建了一个表,里面有所有的servewith grop id。
请求帮助我遍历服务器并构建一个数组,这样我就可以运行MAXMEMORY powershell命令,使用所有服务器的组id对其进行比较。
我已经将所有服务器的详细信息收集到一个表dbo.server groups中
powershell脚本应使用ID遍历该表,并检查ID组中的服务器是否具有相同的MAXMEMORY配置ID server_name环境1 ABC0123 prod
1个ABC5123阶段
1个ABC4123灾难恢复
2个DEF0123产品
2 DEF5123阶段
2个DEF4123灾难恢复
I'm trying to use a powershell script which will check and compare the MAXMEMORY configuration as per the ID(to check whether stage, prod, DR server of the same group\_id have similar setting or not), if not then it will display a warning/message as group\_ids servers are not configured similarly. Please help me with the script发布于 2018-03-19 01:05:07
你把这个脚本写得太长了。此外,您过早地使用了Format-Table -您应该只使用Format-*函数向用户显示最终信息;它们输出的是字符串,而不是可以使用的正确键入的数据/变量。
使用PowerShell和dbatools提供的工具获取服务器列表,然后将该列表作为集合传递给Get-DbaMaxMemory。
import-module dbatools
$ServerList = Invoke-DbaSqlQuery -ServerInstance $Server -query "select distinct servername from dba.dbo.server_group where group_id = 1" | Select-Object -ExpandProperty servername;
Get-DbaMaxMemory -ServerInstance $ServerList | Select-Object SqlInstance, SqlMaxMB;这将为您提供SQL实例的列表以及它们被配置为使用的内存。你在那之后做了什么……很难说,因为你还没有明确定义你要找的是什么。
但这可能并不能说明全部情况。检查配置的值和当前运行的值不是更好吗?你可以用Get-DbaSpConfigure做到这一点。
import-module dbatools
$ServerList = Invoke-DbaSqlQuery -ServerInstance $Server -query "select distinct servername from dba.dbo.server_group where group_id = 1" | Select-Object -ExpandProperty servername;
Get-DbaSpConfigure -ServerInstance $ServerList | Select-Object ServerName,ConfiguredValue,RunningValue;您甚至可以在最终的Select-Object中创建一个计算列,告诉您配置和运行的值是否不同。
发布于 2018-05-21 23:01:59
如果只想使用dbachecks (它在后台使用dbatools ),可以使用
$ServerList = (Invoke-DbaSqlQuery -ServerInstance $Server -query "select distinct servername from dba.dbo.server_group where group_id = 1").servername和
Invoke-DbcCheck -SQlInstance $ServerList -Check MaxMemory或者您可以使用以下命令将配置项app.computername和app.sqlinstance设置为您的服务器列表
Set-DbcConfig -Name app.sqlinstance -Value $serverlist
Set-DbcConfig -Name app.computername -Value $serverlist然后,您可以使用以下命令运行此(或任何其他检查)
Invoke-DbcCheck -Check MaxMemoryhttps://stackoverflow.com/questions/49350082
复制相似问题