使用 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 |
---|---|
0 | The outcome of the job will not be written to the event log. |
1 | If 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. |
3 | The 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 –
此值指示作业步骤成功完成后应执行的操作。这些值可以是以下任何一项:
Value | Description |
---|---|
1 | Quit the job and return success. |
2 | Quit the job and return failed. |
3 | Go to the next job step |
4 | Go 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 之一:
Value | Description |
---|---|
1 | The JOB will be executed only One Time. |
4 | Daily |
8 | Weekly |
16 | Monthly |
64 | Executes the job when the SQL Server Agent Services start. |
128 | Execute the SQL Job when the server is idle. |
- @freq_interval –
指示 SQL 作业执行的日期。数据类型为INT,默认值为0。该值取决于@freq_type 参数中指定的值。有效值为以下任意值:
Value | Effect 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 |
16 | Run the job on the @Freq_interval day of the month |
64 | The @Freq_interval will not be used. |
128 | The @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。