задача с primary always on копировать JOB на secondary реплику.
Set-DbatoolsInsecureConnection -SessionOnly $StartTime = (Get-Date) # Скрипт проверяет джобы и копирует их на вторичные реплики, если их там нет по имени. $AGLSN = 'shr-db01' $primaryReplica = Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Primary $secondaryReplicas = Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Secondary # Получение списка джобов на первичной реплике, исключая указанные системные задания $JobsOnPrimary = Get-DbaAgentJob -SqlInstance $primaryReplica.Name -ExcludeJob 'syspolicy_purge_history', 'AlwaysOn_Latency_Data_Collection', 'dba_Monitoring_Long_Query_Execution', 'sp_WhoIsActive' # Обработка каждой вторичной реплики $secondaryReplicas | ForEach-Object { $JobsOnSecondary = Get-DbaAgentJob -SqlInstance $_.Name -ExcludeJob 'syspolicy_purge_history', 'AlwaysOn_Latency_Data_Collection', 'dba_Monitoring_Long_Query_Execution', 'sp_WhoIsActive' # Найдем джобы, которые есть на первичной, но отсутствуют на вторичной реплике $diffToAdd = $JobsOnPrimary | Where-Object Name -notin ($JobsOnSecondary.Name) # Найдем джобы, которые есть на вторичной реплике, но отсутствуют на первичной (для удаления) $diffToRemove = $JobsOnSecondary | Where-Object Name -notin ($JobsOnPrimary.Name) # Копируем недостающие джобы на вторичную реплику if($diffToAdd) { $diffToAdd | ft Copy-DbaAgentJob -Source $primaryReplica.Name -Destination $_.Name -Job $diffToAdd.Name -DisableOnDestination -force |` Select-Object DateTime, Type, DestinationServer, name, status, Notes |` Format-Table -Property * -AutoSize |` Out-String -Width 1024 |` Out-File D:\DBA_scripts_AG\DBA_synchronize_AG_log.txt -Append } # Удаляем джобы, которых нет на первичной реплике if($diffToRemove) { $diffToRemove | ft $diffToRemove | ForEach-Object { Remove-DbaAgentJob -SqlInstance $_.ComputerName -Job $_.Name -Confirm:$false |` Format-Table -Property * -AutoSize |` Out-String -Width 1024 |` Out-File D:\DBA_scripts_AG\DBA_synchronize_AG_log.txt -Append } } } $EndTime = (Get-Date) $TotalTime = $EndTime - $StartTime $TotalTime.ToString()
Similar Posts:
- Как в always on mssql синхронизировать логины и пароль на вторичной реплики и удалять логины когда удалили на первичной.
- Как синхронизировать обьекты в always on c первичной реплики на вторичную
- Как бэкапить логины (login) и задания (JOB) mssql через dbatools
- Как перенести (Filegroup) файловую группу со одного диска на другой в mssql в always on
- Как поменять сертификаты на iis для всех сайтов с помощью powershell.