首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dbachecks上的Powershell脚本,用于比较表中列出的服务器的MaxMemory

dbachecks上的Powershell脚本,用于比较表中列出的服务器的MaxMemory
EN

Stack Overflow用户
提问于 2018-03-19 00:13:38
回答 2查看 307关注 0票数 0

对服务器运行检查

代码语言:javascript
复制
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灾难恢复

代码语言:javascript
复制
                                                                                      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
EN

回答 2

Stack Overflow用户

发布于 2018-03-19 01:05:07

你把这个脚本写得太长了。此外,您过早地使用了Format-Table -您应该只使用Format-*函数向用户显示最终信息;它们输出的是字符串,而不是可以使用的正确键入的数据/变量。

使用PowerShell和dbatools提供的工具获取服务器列表,然后将该列表作为集合传递给Get-DbaMaxMemory

代码语言:javascript
复制
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做到这一点。

代码语言:javascript
复制
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中创建一个计算列,告诉您配置和运行的值是否不同。

票数 0
EN

Stack Overflow用户

发布于 2018-05-21 23:01:59

如果只想使用dbachecks (它在后台使用dbatools ),可以使用

代码语言:javascript
复制
$ServerList = (Invoke-DbaSqlQuery -ServerInstance $Server -query "select distinct servername from dba.dbo.server_group where group_id = 1").servername

代码语言:javascript
复制
Invoke-DbcCheck -SQlInstance $ServerList -Check MaxMemory

或者您可以使用以下命令将配置项app.computername和app.sqlinstance设置为您的服务器列表

代码语言:javascript
复制
Set-DbcConfig -Name app.sqlinstance -Value $serverlist
Set-DbcConfig -Name app.computername -Value $serverlist

然后,您可以使用以下命令运行此(或任何其他检查)

代码语言:javascript
复制
Invoke-DbcCheck -Check MaxMemory
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49350082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档