Управление шагами задания

Шаг задания — это действие, производимое заданием над базой данных или сервером. Каждое задание должно иметь, по крайней мере, один шаг. Шагами задания могут быть:

  • Исполняемые программы и команды операционной системы.

  • Инструкции Transact-SQL, содержащие хранимые процедуры и расширенные хранимые процедуры.

  • Скрипты PowerShell.

  • Microsoft скрипты ActiveX.

  • Задачи репликации.

  • Службы Analysis Services задачи.

  • Службы Integration Services пакеты.

Каждый шаг задания выполняется в определенном контексте безопасности. Если шаг задания указывает учетную запись-посредник, он выполняется в контексте безопасности учетных данных для учетной записи-посредника. Если шаг задания не указывает учетную запись-посредник, этот шаг выполняется в контексте учетной записи службы агента SQL Server . Только члены предопределенной роли сервера "sysadmin" могут создавать задания, которые не указывают учетную запись-посредник явным образом.

Так как шаги задания выполняются в контексте определенного пользователя Microsoft Windows, этот пользователь должен иметь разрешения и конфигурацию, необходимые для выполнения шага. Например, если создается задание, в котором требуется буква диска или путь в формате UNC, шаги задания могут выполняться под учетной записью пользователя Windows во время проверки задач. Однако для шага задания пользователь Windows должен иметь необходимые разрешения, конфигурации буквы диска или доступ к требуемому диску. В противном случае шаг задания завершится ошибкой. Во избежание этой проблемы нужно, чтобы учетная запись-посредник для каждого шага задания имела необходимые разрешения для задачи, которую выполняет шаг задания. Дополнительные сведения см. в разделе Центр безопасности для ядра СУБД SQL Server и базы данных Azure SQL.

Журналы шагов задания

SQL Server Агент может записывать выходные данные из определенных шагов задания в файл операционной системы или в таблицу "sysjobstepslogs" базы данных "msdb". Следующие шаги задания могут записывать выходные данные в оба адресата:

  • Исполняемые программы и команды операционной системы.

  • Инструкции Transact-SQL

  • Службы Analysis Services задачи.

Только шаги задания, которые выполняются пользователями, являющимися членами предопределенной роли сервера "sysadmin", могут записывать выходные данные шагов задания в файлы операционной системы. Если шаги задания выполняются пользователями, которые являются членами предопределенной роли базы данных SQLAgentUserRole, SQLAgentReaderRole или SQLAgentOperatorRole в базе данных "msdb", то выходные данные этих шагов задания могут быть записаны только в таблицу "sysjobstepslogs".

Журналы шагов задания автоматически удаляются при удалении заданий или шагов заданий.

Примечание

Задача репликации и ведение журнала шагов задания пакета служб Службы Integration Services осуществляется соответствующей подсистемой. Чтобы настроить регистрацию шагов задания для этих типов шагов задания, нельзя использовать агента SQL Server .

Исполняемые программы и команды операционной системы в качестве шагов задания

В качестве шагов задания можно использовать исполняемые программы и команды операционной системы. Эти файлы могут иметь расширения BAT, CMD, COM и EXE.

При использовании исполняемой программы или команды операционной системы в качестве шага задания необходимо указать следующее.

  • Код завершения процесса, возвращаемый при успешном выполнении команды.

  • Команда для выполнения. Чтобы выполнить команду операционной системы, необходимо просто выполнить саму команду. Для внешней программы это ее имя и аргументы, например: C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -e -q "sp_who"

    Примечание

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

Шаги задания Transact-SQL

При создании шага задания Transact-SQL необходимо выполнить следующие действия.

  • Указать базу данных, в которой нужно выполнить задание.

  • Ввести инструкцию Transact-SQL для выполнения. Инструкция может вызывать хранимую процедуру или расширенную хранимую процедуру.

При необходимости можно открыть существующий файл Transact-SQL в качестве команды для шага задания.

Transact-SQL в шагах задания не использует учетные записи-посредники агента SQL Server. Вместо этого шаг задания выполняется как владелец шага задания или как учетная запись службы агента SQL Server , если владелец шага задания является членом предопределенной роли сервера "sysadmin". Члены предопределенной роли сервера sysadmin также могут настроить выполнение шагов задания Transact-SQL в контексте другого пользователя, указав параметр database_user_name в хранимой процедуре sp_add_jobstep. Дополнительные сведения см. в разделе sp_add_jobstep (Transact-SQL).

Примечание

Один шаг задания Transact-SQL может содержать несколько пакетов. Шаги задания Transact-SQL могут содержать внедренные команды GO.

Шаги заданий со скриптами PowerShell

При создании шага задания со скриптом PowerShell необходимо указать в качестве команды для шага одно из двух.

  • Текст скрипта PowerShell.

  • Существующий файл скрипта PowerShell.

Подсистема агента SQL Server PowerShell открывает сеанс PowerShell и загружает оснастки SQL Server PowerShell. Скрипт PowerShell, используемый в качестве команды для шага задания, может обращаться к поставщику SQL Server PowerShell и командлетам. Дополнительные сведения о написании скриптов PowerShell с помощью оснасток SQL Server PowerShell см. в разделе SQL Server PowerShell.

Шаги задания скрипта ActiveX

Важно!

Шаг задания скрипта ActiveX будет удален из агента SQL Server в следующей версии MicrosoftSQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

При создании шага задания скрипта ActiveX необходимо:

  • Указать язык скрипта, на котором будет записан шаг задания.

  • Записать скрипт ActiveX.

Также можно открыть существующий файл скрипта ActiveX как команду для шага задания. В противном случае команды скрипта ActiveX могут быть скомпилированы с помощью внешних средств (например, при помощи Microsoft Visual Basic), а затем выполнены как исполняемые программы.

Если команда шага задания является скриптом ActiveX, можно использовать объект "SQLActiveScriptHost" для печати выходных данных в журнал шагов задания или для создания объектов COM. "SQLActiveScriptHost" — это глобальный объект, введенный системой размещения агента SQL Server в пространство имен скрипта. Объект содержит два метода (Print и CreateObject). Представленный пример показывает, как скрипт ActiveX работает в Visual Basic Scripting Edition (VBScript).

' VBScript example for ActiveX Scripting job step  
' Create a Dmo.Server object. The object connects to the  
' server on which the script is running.  
  
Set oServer = CreateObject("SQLDmo.SqlServer")  
oServer.LoginSecure = True  
oServer.Connect "(local)"  
'Disconnect and destroy the server object  
oServer.DisConnect  
Set oServer = nothing

Шаги задания репликации

При создании публикаций и подписок с помощью репликации задания репликации создаются по умолчанию. Тип создаваемого задания определяется типом репликации (моментальный снимок, транзакционная репликация или репликация слиянием) и используемыми параметрами.

Шаги задания репликации активируют один из следующих агентов репликации:

  • Агент моментальных снимков (задание Snapshot)

  • Агент чтения журнала (задание LogReader)

  • Агент распространителя (задание Distribution)

  • Агент слияния (задание Merge)

  • Агент чтения очереди (задание QueueReader)

Настроив репликацию, можно указать выполнение агентов репликации одним из следующих способов: постоянно после запуска агента SQL Server , по запросу или по расписанию. Дополнительные сведения об агентах репликации см. в разделе Обзор агентов репликации.

Шаги задания служб Analysis Services

SQL Server Агент поддерживает два определенных типа шагов заданий служб Analysis Services: шаги задания команды и шаги задания запроса.

Шаги задания команды служб Analysis Services

При создании шага задания служб Службы Analysis Services необходимо выполнить следующее.

  • Определить сервер базы данных OLAP, на котором необходимо выполнить шаг задания.

  • Ввести инструкцию, которую необходимо выполнить. Для метода Execute служб Службы Analysis Services инструкция должна быть в формате XML. Инструкция может не содержать полный конверт SOAP или XML-файл для метода Discover служб Службы Analysis Services. Обратите внимание, что хотя в среде SQL Server Management Studio поддерживаются полные конверты SOAP и метод Discover, шаги заданий агента SQL Server в ней не поддерживаются.

Шаги задания запроса служб Analysis Services

При создании шага задания с запросом служб Службы Analysis Services необходимо:

  • Определить сервер базы данных OLAP, на котором необходимо выполнить шаг задания.

  • Ввести инструкцию, которую необходимо выполнить. Эта инструкция должна быть запросом многомерных выражений (MDX).

Дополнительные сведения о многомерных выражениях см. в статье Основы запросов многомерных выражений (службы Analysis Services).

Пакеты служб Integration Services

При создании шага задания с пакетом служб Службы Integration Services необходимо выполнить следующее.

  • Указать источник пакета.

  • Указать размещение пакета.

  • Указать файлы конфигурации, если они необходимы для пакета.

  • Указать файлы команд, если они необходимы для пакета.

  • Указать необходимую для пакета проверку. Например, можно указать, что пакет должен быть подписанным или иметь определенный идентификатор пакета.

  • Указать источники данных для пакета.

  • Указать регистраторы для пакета.

  • Указать переменные и значения, которые необходимо установить до запуска пакета.

  • Указать параметры выполнения.

  • Добавить или изменить параметры командной строки.

Обратите внимание, что если пакет был развернут в каталоге служб SSIS и в качестве источника пакета был указан Каталог служб SSIS , значительная часть этих конфигурационных данных берется автоматически из пакета. На вкладке Конфигурация можно указать среду, значения параметров, значения диспетчера подключений, переопределения свойств и выполняется ли пакет в 32-разрядной среде.

Дополнительные сведения о создании шагов заданий, которые выполняют пакеты служб Службы Integration Services , см. в разделе Пакеты служб из заданий агента SQL Server.

Описание Раздел
Описывает создание шага задания с помощью исполняемой программы. Create a CmdExec Job Step
Описывает, как сбросить разрешения агента SQL Server . Настройка пользователя для создания заданий агента SQL Server и управления заданиями
Описывает создание шага задания Transact-SQL. Создание шага задания Transact-SQL
Описывает определение параметров для шагов заданий Transact-SQL агента Microsoft SQL Server . Определение параметров для шагов заданий Transact-SQL
Описывает создание шага задания скрипта ActiveX. Create an ActiveX Script Job Step
Описывает процесс создания и определения шагов заданий агента SQL Server , выполняющих команды и запросы служб SQL Server Analysis Services. Create an Analysis Services Job Step
Описывает, какое действие будет выполнять SQL Server , если при выполнении задания происходит ошибка. Настройка потока действий системы при успешном или неуспешном выполнении шага задания
Описывает, как просмотреть сведения о шаге задания в окне «Свойства шага задания». View Job Step Information
Описывает, как удалить журнал шага задания агента SQL Server . Delete a Job Step Log

См. также:

dbo.sysjobstepslogs (Transact-SQL)
Создание заданий
sp_add_job (Transact-SQL)