Powershell скрипт скрипты на dbachecks для сравнения MaxMemory сервера, перечисленных в таблице

Вопрос задан: 2 года назад Последняя активность: 1 год назад
up 0 down

Выполнить проверку в отношении серверов

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 (этап, Prod, DR серверов в таблице в соответствии с группами), теперь я хочу, чтобы сравнить серверы с идентификатор группы для проверки wethere серверов (этап, Prod, DR) с таким же идентификатор группы оказывает же MAXMemory или нет конфигурации *.

Для этого я использую ниже Powershell скрипт вы можете пожалуйста помочь мне с этим, я создал таблицу со всеми servewith Grop ид.

Запрос, пожалуйста, помогите мне с проходными серверами и создать массив, так что я могу запустить команду MEMORY PowerShell MAX, чтобы сравнить его с помощью группового идентификатора для всех серверов.

Я собрал все сервера деталей в таблице dbo.server групп
сценарий PowerShell должен итерацию по таблице, используя идентификатор и проверить, имеет ли серверы в группе идентификаторов же конфигурация MAXMEMORY ID server_name среды 1 ABC0123 прод
1 ABC5123 этап
1 ABC4123 ДР
2 DEF0123 прод
2 DEF5123 этап
2 DEF4123 Д.Р.
Я пытаюсь использовать Powershell скрипт, который будет проверять и сравнивать MAXMEMORY конфигурацию в соответствии с ID (для проверки этапа, прод, DR сервер из тех же group_id, имеют ли такие же настройки или нет), если нет, то он будет отображаться предупреждение/сообщение, как group_ids серверы не сконфигурированы аналогично. Пожалуйста, помогите мне со сценарием

2 ответа

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 0 down

Если вы просто хотите использовать 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 MaxMemory
up 0 down

Вы делаете этот скрипт больше, чем это должно быть. Кроме того, вы используете 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 чтобы сказать вам, если сконфигурированные и текущие значения отличаются.

Ошибка 505

Что-то пошло не так

Попробуйте воспользоваться поиском