Поделиться через


Создание шагов задания

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

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

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

  • Сценарии PowerShell.

  • Сценарии Microsoft ActiveX.

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

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

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

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

Так как шаги задания выполняются в контексте определенного пользователя Microsoft Windows, этот пользователь должен иметь разрешения и конфигурацию, необходимые для выполнения шага. Например, если создается задание, в котором требуется буква диска или путь в формате UNC, шаги задания могут выполняться под учетной записью пользователя Windows во время проверки задач. Однако для шага задания пользователь Windows должен иметь необходимые разрешения, конфигурации буквы диска или доступ к требуемому диску. В противном случае шаг задания завершится ошибкой. Во избежание этой проблемы нужно, чтобы учетная запись-посредник для каждого шага задания имела необходимые разрешения для задачи, которую выполняет шаг задания. Дополнительные сведения см. в разделе Защита и обеспечение безопасности (компонент Database Engine).

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

Агент 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"

    ПримечаниеПримечание

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

Создание шага задания с исполняемой программой

Восстановление разрешения агента SQL Server

Шаги задания 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.

Создание шага задания Transact-SQL

Определение параметров шага задания Transact-SQL

Шаги заданий со сценариями 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

Следующий пример показывает ту же задачу в Jscript:

// JScript example for ActiveX Scripting job step
// Create a Dmo.Server object. The object connects to the
// server on which the script is running.

var oServer = CreateObject("SQLDmo.SqlServer");
oServer.LoginSecure = true;
oServer.Connect("(local)");

//Disconnect and destroy the server object
oServer.DisConnect();
oServer.Close(); 

Создание шага задания сценария ActiveX

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дополнительные сведения об XML для служб Analysis Services см. в разделе Общие сведения об XML для аналитики (XMLA).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Справочник

Основные понятия