管理作业步骤

适用于:SQL ServerAzure SQL 托管实例

重要

Azure SQL 托管实例,目前大多数但并非所有 SQL Server 代理功能都受支持。 有关详细信息,请参阅 Azure SQL 托管实例 T-SQL 与 SQL Server 的差异

作业步骤是作业对数据库或服务器执行的操作。 每个作业必须至少有一个作业步骤。 作业步骤可以为:

  • 可执行程序和操作系统命令。
  • Transact-SQL 语句,包括存储过程和扩展存储过程。
  • PowerShell 脚本。
  • 复制任务。
  • Analysis Services 任务。
  • Integration Services 包。

每个作业步骤都在特定的安全上下文中运行。 如果作业步骤指定一个代理,该作业步骤将在该代理凭据的安全上下文中运行。 如果作业步骤未指定代理,作业步骤将在 SQL Server 代理服务帐户的上下文中运行。 只有 sysadmin 固定服务器角色的成员才能创建未显式指定代理的作业。

由于作业步骤在特定 Windows 用户的上下文中运行,因此该用户必须具有执行作业步骤所需的权限和配置。 例如,如果创建需要驱动器号或通用命名约定 (UNC) 路径的作业,则在测试任务时,作业步骤可能会在 Windows 用户帐户下运行。 但是,运行作业步骤的 Windows 用户还必须具有所需的权限、驱动器号配置权限或对所需驱动器的访问权限。 否则,作业步骤会失败。 为了防止出现这种问题,请确保每个作业步骤的代理都具有该作业步骤所执行任务的必要权限。 有关详细信息,请参阅 SQL Server 数据库引擎和 Azure SQL 数据库的安全性

作业步骤日志

SQL Server 代理可以将某些作业步骤的输出写入操作系统文件,也可以将其写入 msdb 数据库中的 sysjobstepslogs 表。 以下类型的作业步骤可以将输出写入两个目标位置:

  • 可执行程序和操作系统命令。
  • Transact-SQL 语句。
  • Analysis Services 任务。

只有作为 sysadmin 固定服务器角色成员的用户执行的作业步骤的输出可以写入操作系统文件。 如果作业步骤由属于数据库中 SQLAgentUserRole、SQLAgentReaderRole 或 SQLAgentOperatorRole 固定数据库角色 msdb 的成员的用户执行,则这些作业步骤的输出只能写入 sysjobstepslogs 表。

删除作业或作业步骤时,会自动删除作业步骤日志。

注释

复制任务和集成服务包作业步骤的日志记录由各自的子系统负责处理。 不能使用 SQL Server 代理为这些类型的作业步骤配置作业步骤日志记录。

作业步骤中的可执行程序和操作系统命令

可以将可执行程序和操作系统命令作为作业步骤。 这些文件可能有 .bat、.cmd、.com或 .exe 文件扩展名。

使用可执行程序或操作系统命令作为作业步骤时,必须指定以下内容:

  • 命令成功完成时返回的进程退出代码。

  • 要执行的命令。 若要执行操作系统命令,只需指定该命令本身。 对于外部程序,这是程序的名称和程序的参数,例如:

    C:\Program Files\Microsoft SQL Server\160\Tools\Binn\sqlcmd.exe -e -q "sp_who"
    

    如果可执行文件不在系统路径中指定的目录内,或者不在运行作业步骤的用户路径内,请提供可执行文件的完整路径。

Transact-SQL 作业步骤

在创建 Transact-SQL 作业步骤时,必须执行以下操作:

  1. 确定要在其中运行作业的数据库。

  2. 键入要执行的 Transact-SQL 语句。 该语句可能会调用存储过程或扩展存储过程。

还可以选择将现有的 Transact-SQL 文件作为作业步骤的命令打开。

小窍门

在 SQL Server 代理作业中,T-SQL 作业步骤通过修改 TEXTSIZE 的值来限制结果集中某些列的长度。 此行为可能导致意外结果。 例如, SELECT 在 SQL Server Management Studio 中按预期工作的查询可以在通过 SQL Server 代理执行时返回截断的列值。 为了避免截断,在 T-SQL 作业步骤执行的查询中设置 TEXTSIZE

Transact-SQL 作业步骤不使用 SQL Server 代理。 而是由作业步骤的所有者或 SQL Server 代理服务帐户(如果作业步骤的所有者是 sysadmin 固定服务器角色的成员)运行作业步骤。 Sysadmin 固定服务器角色的成员还可以使用 sp_add_jobstep 存储过程的 database_user_name 参数来指定 Transact-SQL 作业步骤在其他用户的上下文中运行。 有关详细信息,请参阅 sp_add_jobstep

注释

一个 Transact-SQL 作业步骤可以包含多个批处理。 Transact-SQL 作业步骤可以包含嵌入的 GO 命令。

PowerShell 脚本作业步骤

当创建 PowerShell 脚本作业步骤时,必须指定以下两项之一作为步骤的命令:

  • PowerShell 脚本的文本。
  • 要打开的现有 PowerShell 脚本文件。

SQL Server 代理 PowerShell 子系统打开一个 PowerShell 会话,并加载 SQL Server PowerShell 管理单元。用作作业步骤命令的 PowerShell 脚本可以引用 SQL Server PowerShell 提供程序和 cmdlet。 有关使用 SQL Server PowerShell 管理单元编写 PowerShell 脚本的详细信息,请参阅 SQL Server PowerShell

复制作业步骤

使用复制创建发布和订阅时,默认情况下会创建复制作业。 创建的作业类型由复制的类型(快照、事务或合并)和所用选项确定。

复制作业步骤将激活下列复制代理之一:

  • 快照代理(快照作业)
  • 日志读取器代理(LogReader 作业)
  • 分发代理(分发作业)
  • 合并代理(合并作业)
  • 队列读取器代理(QueueReader 作业)

设置复制后,您可以指定以下列三种方式之一运行复制代理:在 SQL Server 代理启动后连续运行、按需运行或按计划运行。 有关复制代理的详细信息,请参阅 复制代理概述

Analysis Services 作业步骤

SQL Server 代理支持两种不同类型的 Analysis Services 作业步骤:命令作业步骤和查询作业步骤。

Analysis Services 命令作业步骤

创建 Analysis Services 命令作业步骤时,必须:

  1. 标识要运行作业步骤的数据库 OLAP 服务器。

  2. 键入要执行的语句。 对于 Analysis Services 的 Execute 方法,此语句必须是 XML。 该语句可能缺少完整的 SOAP 信封或分析服务 Discover 方法的 XML。 请注意,虽然 SQL Server Management Studio 支持完整的 SOAP 信封和 Discover 方法,但是 SQL Server 代理作业步骤却不支持。

Analysis Services 查询作业步骤

创建 Analysis Services 查询作业步骤时,必须:

  1. 标识要运行作业步骤的数据库 OLAP 服务器。

  2. 键入要执行的语句。 该语句必须是一个多维表达式 (MDX) 查询。

有关 MDX 的详细信息,请参阅 MDX 语句基础知识 (MDX)

Integration Services 包

创建 Integration Services 包作业步骤时,必须执行以下步骤:

  1. 确定包的源。

  2. 确定包的位置。

  3. 如果包需要配置文件,则确定配置文件。

  4. 如果包需要命令文件,请标识命令文件。

  5. 确定用于包的验证。 例如,可以指定包必须签名,也可以指定包必须具有特定的包 ID。

  6. 确定包的数据源。

  7. 确定包的日志提供程序。

  8. 指定运行包之前要设置的变量和值。

  9. 确定执行选项。

  10. 添加或修改命令行选项。

如果将包部署到 SSIS 目录,并将 SSIS 目录 指定为包源,则会从包中自动获取大部分此配置信息。 在“配置”选项卡下,可以指定环境、参数值、连接管理器值、属性重写以及包是否在 32 位运行时环境下运行。

若要详细了解创建运行 Integration Services 包的作业步骤,请参阅包的 SQL Server 代理作业

DESCRIPTION 文章
描述如何创建带有可执行程序的作业步骤。 创建 CmdExec 作业步骤
介绍如何重置 SQL Server 代理权限。 配置用户以创建和管理 SQL Server 代理作业
介绍如何创建 Transact-SQL 作业步骤。 创建 Transact-SQL 作业步骤
说明如何定义 Microsoft SQL Server 代理 Transact-SQL 作业步骤的选项。 Define Transact-SQL Job Step Options
介绍如何创建 ActiveX 脚本作业步骤。 创建 ActiveX 脚本作业步骤
介绍如何创建和定义用于执行 SQL Server Analysis Services 命令和查询的 SQL Server 代理作业步骤。 创建一个分析服务作业步骤
介绍在作业执行期间失败时, SQL Server 应执行什么操作。 设定作业步骤的成功或失败流程
说明如何在“作业步骤属性”对话框中查看作业步骤的详细信息。 查看工作步骤信息
说明如何删除 SQL Server 代理作业步骤日志。 删除作业步骤日志