📜  使用 T-SQL 在 SQL Server 中配置 SQL 作业

📅  最后修改于: 2022-05-13 01:54:25.425000             🧑  作者: Mango

使用 T-SQL 在 SQL Server 中配置 SQL 作业

在本文中,我们将学习如何使用 T-SQL 在 SQL Server 中配置 SQL 作业。此外,我们将详细讨论使用 T-SQL 的 SQL Server 中 SQL 作业的参数。让我们一一讨论。

介绍 :
SQL Server 代理是用于数据库任务自动化的组件。例如,如果我们只需要在非营业时间对生产服务器进行索引维护。因此,我们创建了一个运行索引维护的 SQL Server 作业,并将其安排在“关闭”时间。当我们安装 SQL Server 时,SQL Server 代理被禁用。因此,首先我们将启用它并手动启动它。然后,我们将使用 SQL Server Management Studio 和 MSDB 数据库的系统存储过程配置 SQL Server 作业。因此,本文解释了如何使用 MSDB 数据库的系统存储过程创建 SQL Server 作业。

MSDB数据库的系统存储过程:
SQL Server 使用如下。

查询 1 : sp_add_job :
该过程用于创建新作业。如果成功,则返回@job_id。以下参数适用如下。

  • @job_name –
    这是一个独特的工作名称。
  • @启用 –
    作业已启用或禁用。创建作业后,您可以将参数的值设置为 1 以启用作业。
  • @notify_level_eventlog –
    此参数用于在 Windows 事件查看器中写入 SQL 作业的状态。
Value                            Description
0The outcome of the job will not be written to the event log.
1If the job executes successfully, the outcome will be written to the event viewer
2(default value)If the job fails, the outcome and error message will be written to the event viewer.
3The outcome of the job is written to the event viewer.
  • @notify_level_email –
    它将根据作业结果发送邮件。参数的有效值与@notify_level_eventlog 参数值相同。
  • @notify_level_page –
    此参数用于发送 SQL 作业结果的寻呼机通知。参数的有效值与@notiify_level_eventlog 参数值相同。
  • @delete_level –
    此参数用于在完成后删除作业。在这种情况下,参数的值应该是
  • 笔记 -
    默认值为 0;然后,它不会在完成后删除作业。
  • @category_level –
    此参数表示作业类别值。默认值为空。
  • @owner_login_name –
    该值是域名或作业所有者的 SQL 登录名。

查询 2: Sp_add_jobserver :
对于 SQL 作业执行,它指定目标服务器。它接受以下参数,如下所示。



  • @job_id –
    在 SQL 作业中,它标识唯一值,它是一个 UNIQUEIDENTIFIER。其默认值为 NULL。
  • @job_name –
    在 SQL 作业中,此参数指定作业的名称。
  • @服务器名称 -
    它是您要运行 SQL 作业的服务器的名称。默认参数值可以是本地服务器 (LOCAL) 或目标服务器主机名。

查询 3: sp_add_jobstep :
此存储过程适用于在 SQL 作业中添加作业步骤。这些过程使用以下参数,如下所示。

  • @job_name –
    要在其中添加步骤的作业的名称。它是一个以 NULL 作为默认值的 SYSNAME。
  • @step_name –
    步骤的名称。它是一个 SYSYNAME,默认值为 NULL。
  • @step_id –
    作业步骤的顺序 ID。它是一个没有间隙的递增数字。它是一个 INT 值,默认值为 NULL。
  • @cmdexec_success_code –
    该值由 CmdExec 子系统返回。表示命令执行是否成功。代码为 int 值,默认值为 0。
  • @on_success_action –
    此值指示作业步骤成功完成后应执行的操作。这些值可以是以下任何一项:
ValueDescription
1Quit the job and return success.   
2Quit the job and return failed.
3Go to the next job step
4Go to the step id of on_success_step_id
  • @on_fail_action –
    指定作业步骤失败时要执行的操作。它是一个 INT 值,默认值为 NULL。
  • @retry_attempt –
    指定作业步骤失败后的重试次数。它是一个 INT 值,默认值为 NULL。
  • @retry_interval –
    设置两次 SQL 作业步骤失败尝试之间的时间间隔。它是一个 INT 值,默认值为 NULL。
  • @子系统——
    指定 SQL Server 代理用来执行命令的子系统的名称。有效值如下:
Subsystem value              Description
CmdExec file(*.exe,*.bat)Operating system command or the executable
ANALYSYISQUERY           SQL Server analysis service queries, for example, MDX, DMX
ANALYSISQUERY          SQL Server analysis service command, for example, XMLA.
SSIS                   SQL Server integration service package.
PowerShell                    PowerShell command on the script.
T-SQL                        T-SQL Query or Stored procedure
Distribution                 SQL Server replication distributor agent.
Snapshot                SQL Server replication snapshot agent.
LogReader               SQL Server replication Log reader agent.
QueueReader          SQL Server replication queue reader.
  • @命令 -
    指定 SQL Server 代理服务应通过子系统执行的命令。数据类型为varchar(max),默认值为NULL。
  • @数据库名称 -
    指定要在其中运行命令的数据库的名称。当您使用 SQL Server 代理运行 T-SQL 脚本时,此参数很有用。

查询 4:Sp_add_jobschedule :
存储过程用于创建 SQL 作业计划。此过程使用以下参数,如下所示。

  • @job_name –
    指定 SQL 作业的名称。将为@job_name 参数中指定的 SQL 作业制定计划。
  • @姓名 -
    日程表的名称。数据类型为varchar,默认值为NULL。
  • @启用 –
    设置 1 以启用计划或设置 0 以禁用计划。
  • @freq_types –
    表示SQL Job 执行的时间。该参数的数据类型为 INT,默认值为 0。有效值为以下g 之一:
ValueDescription
1The JOB will be executed only One Time.
4Daily
8 Weekly
16Monthly
64Executes the job when the SQL Server Agent Services start.
128Execute the SQL Job when the server is idle.
  • @freq_interval –
    指示 SQL 作业执行的日期。数据类型为INT,默认值为0。该值取决于@freq_type 参数中指定的值。有效值为以下任意值:
ValueEffect on the job schedule
1(Once)The @Freq_interval will not be used.
4(Daily)Every @freq_interval days
8

 The value of the @Freq_interval can be any of the following as follows.

                          1=Sunday

                          2=Monday

                          4=Tuesday

                          8=Wednesday

                          16=Thursday

                          32= Friday

                          64= Saturday

16Run the job on the @Freq_interval day of the month
64The @Freq_interval  will not be used.
128The @Freq_interval will not be used.
  • @freq_subday_type –
    指定freq_subday_interval 的单位。数据类型为INT,默认值为NULL。
  • @active_start_date –
    设置要开始执行作业的日期。数据类型为INT,没有默认值。日期格式为 YYMMDD。该值必须大于或等于 19900101。
  • @active_end_date –
    指定停止作业执行的日期。数据类型为INT,无默认值。日期格式为 YYMMDD,该值必须大于或等于 19900101。
  • @active_start_time –
    指定要开始作业执行的时间。数据类型为 INT,没有默认值。时间格式为 HHMMSS。
  • @active_end_time –
    指定要停止作业执行的时间。数据类型为 INT,没有默认值。时间格式为 HHMMSS。