Управление заданиями SQL Server Agent в среде высокой доступности / восстановления после сбоя может быть сложной задачей. Вручную включать и отключать задания на разных серверах или писать код для проверки текущего экземпляра может быть трудоемким и подверженным ошибкам. В этой статье мы рассмотрим решение с использованием PowerShell для автоматизации процесса включения/отключения заданий SQL Server Agent.
Начальные соображения
Прежде чем мы приступим к решению, есть несколько вещей, которые следует учесть:
- Убедитесь в наличии связи между сервером, на котором будет выполняться сценарий PowerShell, и целевым экземпляром SQL Server.
- Убедитесь, что учетная запись, используемая для подключения к экземпляру SQL Server, имеет достаточные привилегии для доступа к системной базе данных msdb и выполнения sp_update_job.
Параметры сценария PowerShell
Для выполнения сценария PowerShell требуются три обязательных параметра:
$instance
: имя целевого экземпляра SQL Server, к которому нужно подключиться$job
: имя задания SQL Agent, которое нужно включить или отключить$action
: 0 для отключения задания или 1 для включения задания
Выполнение сценария
Чтобы выполнить сценарий, выполните следующие действия:
- Откройте окно PowerShell.
- Перейдите в каталог, где находится сценарий.
- Выполните сценарий с помощью следующей команды:
PS C:\temp> .\Get-MSSQL-Instance-Jobs-Flip.ps1 localhost test 0
Сценарий запросит у вас учетные данные для подключения к указанному экземпляру SQL Server. Вы можете выбрать один из следующих вариантов:
- Доверенный: Сценарий будет использовать те же учетные данные пользователя, используемые для выполнения сценария PowerShell.
- Вход в систему Windows: Укажите учетную запись Windows для аутентификации.
- Вход в систему SQL: Укажите учетную запись SQL для аутентификации.
Если сценарий столкнется с проблемами при подключении к экземпляру SQL Server, он уведомит вас.
Обработка нескольких заданий одновременно
Если вам нужно включить или отключить несколько заданий в экземпляре SQL Server, вы можете создать файл, который вызывает сценарий PowerShell для каждого задания. Каждая строка в файле должна указывать имя задания и предполагаемый статус (0 для отключения, 1 для включения).
Например, если у вас есть три задания с именами test, test2 и test3, и вы хотите отключить их все, создайте файл со следующим содержимым:
powershell C:\temp\Get-MSSQL-Instance-Jobs-Flip.ps1 localhost test 0
powershell C:\temp\Get-MSSQL-Instance-Jobs-Flip.ps1 localhost test2 0
powershell C:\temp\Get-MSSQL-Instance-Jobs-Flip.ps1 localhost test3 0
Обратите внимание, что вам может потребоваться изменить сценарий, чтобы передать учетные данные для входа или уже включить их, чтобы избежать запроса ввода каждый раз при запуске сценария.
Автоматизируя процесс включения/отключения заданий SQL Server Agent с помощью PowerShell, вы можете сэкономить время и обеспечить правильное выполнение критических заданий в вашей среде высокой доступности / восстановления после сбоя.
Скачать сценарий PowerShell можно по этой ссылке.
Статья последний раз обновлена: 2021-08-17