Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте агент SQL Server для запуска скриптов SQL Server PowerShell в запланированное время.
Замечание
Существует два модуля SQL Server PowerShell; SqlServer и SQLPS.
Модуль SqlServer — это текущий модуль PowerShell для использования.
Модуль SQLPS включен в установку SQL Server (для обратной совместимости), но больше не обновляется.
Модуль SqlServer содержит обновленные версии командлетов в SQLPS и включает новые командлеты для поддержки последних функций SQL.
Установите модуль SqlServer из коллекции PowerShell.
Дополнительные сведения см. в SQL Server PowerShell.
Начиная с SQL Server 2019, можно отключить SQLPS. В первой строке шага задания типа PowerShell можно добавить #NOSQLPS
, что останавливает автоматическую загрузку модуля SQLPS агентОМ SQL. Теперь задание агента SQL запускает версию PowerShell, установленную на компьютере, а затем вы можете использовать любой другой модуль PowerShell, который вам нравится.
Чтобы использовать модуль SqlServer на шаге задания агента SQL, этот код можно поместить в первые две строки скрипта.
#NOSQLPS
Import-Module -Name SqlServer
Запуск PowerShell из агента SQL Server
Есть несколько типов шагов заданий агента SQL Server. Каждый тип связан с некоторой подсистемой, в которой реализуется определенная среда, например агент репликации или среда командной строки. Можно создавать скрипты Windows PowerShell, а затем использовать агент SQL Server, чтобы включить скрипты в задания, которые выполняются в запланированное время или в ответ на события агента SQL Server. Скрипты Windows PowerShell можно запускать либо с помощью шагов задания командной строки, либо с помощью шагов задания PowerShell.
Используйте шаг задания PowerShell, чтобы подсистема агента SQL Server запускала служебную программу sqlps , которая запускает PowerShell и импортирует модуль sqlps . Если вы используете SQL Server 2019 или более поздней версии, рекомендуется использовать модуль SqlServer на шаге задания агента SQL.
Используйте шаг задания командной строки для выполнения PowerShell.exeи укажите скрипт, импортируемый модуль sqlps .
Осторожность по поводу потребления памяти
Каждый шаг задания агента SQL Server, который запускает PowerShell с модулем sqlps , запускает процесс, который потребляет около 20 МБ памяти. Одновременный запуск большого числа шагов задания Windows PowerShell может иметь негативное влияние на производительность.
Создание шага задания PowerShell
Создание шага задания PowerShell
Разверните агент SQL Server, создайте новое задание или щелкните правой кнопкой мыши существующее задание и выберите пункт "Свойства". Дополнительные сведения о создании задания см. в разделе /sql/ssms/agent/create-jobs.
В диалоговом окне "Свойства задания " выберите страницу "Шаги " и нажмите кнопку "Создать".
В диалоговом окне Новый шаг задания введите имя шага .
В списке "Тип" выберите PowerShell.
В списке запуск от имени выберите учетную запись-посредник с учетными данными, которыми будет использоваться задание.
В командном поле введите синтаксис скрипта PowerShell, который будет выполняться для шага задания. Кроме того, нажмите кнопку "Открыть " и выберите файл, содержащий синтаксис скрипта.
Выберите страницу "Дополнительно ", чтобы задать следующие параметры шага задания: какие действия следует предпринять, если шаг задания завершается успешно или завершается сбоем, сколько раз агент SQL Server должен пытаться выполнить шаг задания и как часто следует выполнять попытки повторных попыток.
Создание шага задания командной строки
Создание шага задания CmdExec
Разверните агент SQL Server, создайте новое задание или щелкните правой кнопкой мыши существующее задание и выберите пункт "Свойства". Дополнительные сведения о создании задания см. в разделе /sql/ssms/agent/create-jobs.
В диалоговом окне "Свойства задания " выберите страницу "Шаги " и нажмите кнопку "Создать".
В диалоговом окне Новый шаг задания введите имя шага .
В списке Тип выберите Операционная Система (CmdExec).
В списке "Запуск от имени" выберите учетную запись прокси-сервера с учетными данными, которые будут использоваться заданием. По умолчанию действия задания CmdExec выполняются в контексте учетной записи службы агента SQL Server.
В поле с кодом выхода процесса успешной команды введите значение от 0 до 999999.
В командном поле введите команды, начинающиеся с PowerShell.exe с параметрами, указывающими скрипт PowerShell для выполнения. Эти примеры аналогичны синтаксису выполнения команд PowerShell из командной строки Windows.
PowerShell.exe -?
Ознакомьтесь со всеми возможными параметрами синтаксиса.Пример 1. Выполняет простой командлет.
PowerShell.exe -Command "Get-Date"
Пример 2. Выполняет запрос через SQLCmd.exe на текущем сервере (в примере используется замена маркера агента SQL).
PowerShell.exe -Command "sqlcmd.exe -S $(ESCAPE_NONE(SRVR)) -Q 'SELECT @@VERSION'"
Пример 3. Запуск скрипта PowerShell (с помощью
pwsh.exe
имени исполняемого файла в PowerShell 7.0, который должен быть установлен на сервере). Путь к скрипту является локальным для сервера, на котором выполняется агент SQL.PWSH.exe -ExecutionPolicy RemoteSigned -File X:\MyScripts\script001.ps1
Выберите страницу "Дополнительно ", чтобы задать параметры шага задания, например действия, которые необходимо предпринять, если шаг задания выполнен или завершается сбоем, сколько раз агент SQL Server должен попытаться выполнить шаг задания, а также файл, в котором агент SQL Server может записать выходные данные шага задания. Только члены серверной роли sysadmin могут записывать выходные данные шага задания в файл операционной системы.