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

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

  • Исполняемые программы и команды операционной системы.
  • Инструкции Transact-SQL, включающие хранимые процедуры и расширенные хранимые процедуры.
  • Сценарии Microsoft ActiveX.
  • Задачи репликации.
  • Задачи служб Analysis Services.
  • Пакеты служб Integration Services.

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

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

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

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

  • исполняемые программы и команды операционной системы;
  • инструкции Transact-SQL;
  • задачи служб Analysis Services.

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

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

ms187056.note(ru-ru,SQL.90).gifПримечание.
Задача репликации и ведение журнала шагов задания пакета служб Integration Services осуществляется соответствующей подсистемой. Чтобы настроить регистрацию шагов задания для этих типов шагов задания, нельзя использовать агента SQL Server.

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

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

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

  • Код завершения процесса, возвращаемый при успешном выполнении команды.
  • Команду для выполнения. Чтобы выполнить команду операционной системы, необходимо просто выполнить саму команду. Для внешней программы это ее имя и аргументы, например: C:\Program Files\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe -e -q "sp_who"
    ms187056.note(ru-ru,SQL.90).gifПримечание.
    Необходимо предоставить полный путь к исполняемой программе, если только она не размещена в каталоге, указанном в системном пути или в пути пользователя, от имени которого выполняется шаг задания.
Создание шага задания с исполняемой программой
Восстановление разрешения агента 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).

ms187056.note(ru-ru,SQL.90).gifПримечание.
Один шаг задания Transact-SQL может включать несколько пакетов. Шаги задания Transact-SQL могут содержать внедренные команды GO.
Создание шага задания Transact-SQL
Определение параметров шага задания Transact-SQL

Шаги задания сценария ActiveX

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

Sub main()
          
    ' Create a Smo.Server object. The object connects to the
    ' server on which the script is running.

    Set SmoServer = _
        CreateObject ("Microsoft.SqlServer.Management.Smo.Server")


    ' Check the number of active connections for AdventureWorks.
    
    ConnectionCount = _
        SmoServer.GetActiveDbConnectionCount("AdventureWorks")


    ' If there are active connections, close the connections.

    If ConnectionCount > 0 Then

        ' Log in the job history that this job step dropped
        ' connections to AdventureWorks.

        Print ("Dropping connections to AdventureWorks." + crLf )

        ' Drop all active connections to AdventureWorks.

        SmoServer.DropAllActiveDbConnections("AdventureWorks")

   End If

End Sub

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

// JScript example for ActiveX job step

function main() {

    // Create a Smo.Server object. The object connects to the
    // server on which the script is running.

    var SmoServer =
        CreateObject("Microsoft.SqlServer.Management.Smo.Server");

    // Check the number of active connections for AdventureWorks.

    var ConnectionCount =
        SmoServer.GetActiveDbConnectionCount("AdventureWorks");

    // If there are active connections, close the connections.

    if (ConnectionCount > 0) {

        // Log in the job history that this job step dropped
        // connections to AdventureWorks.

        Print ("Dropping connections to AdventureWorks.\n");

        // Drop all active connections to AdventureWorks.

        SmoServer.DropAllActiveDbConnections("AdventureWorks");
    }
}
Создание шага задания сценария ActiveX

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

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

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

  • Агент моментальных снимков (задание Snapshot)
  • Агент чтения журнала (задание LogReader)
  • Агент распространителя (задание Distribution)
  • Агент слияния (задание Merge)
  • Агент чтения очереди (задание QueueReader)

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

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

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

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

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

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

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

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

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

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

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

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

При создании шага задания пакета служб Integration Services необходимо:

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

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

См. также

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

Создание заданий

Другие ресурсы

sysjobstepslogs (Transact-SQL)
sp_add_job (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005