构建MSSQL服务器上的自动文件运行环境

1.介绍

在MSSQL服务器上构建自动文件运行环境是一项非常有用且常见的任务。这种环境可以使数据库运行周期性或非周期性的指定文件,因此在这篇文章中我们将会讨论如何在MSSQL服务器上配置自动文件运行环境,以及如何管理和监视这个过程。

2.前置条件

2.1 MSSQL服务器

为了实现这个目标,我们需要一个运行MSSQL数据库的服务器。可以是本地机器或云端服务器。作为管理员,您需要为此服务器拥有完整的权限。

2.2 SQL Server代理服务

与自动任务相关的SQL Server代理服务也必须在服务器上运行。它是一个基于COM的服务,可以提供SQL Server的扩展功能。它可以启动复杂的多步骤任务,以及在其他应用程序完成之前等待任务完成。

3.创建作业

作业是SQL Server代理提供的任务自动化的一种机制。 作业可以包含多个步骤,而每个步骤可以调用SQL Server支持的各种命令。 我们将使用作业来自动运行我们的文件。 以下是创建作业的基本步骤。

3.1 新建作业

与新建其他实体一样,新建作业的方法与在SQL Server Management Studio(SSMS)中新建表、视图或者存储过程等实体的方法相同。但是,在新建时,我们要为作业指定名称和描述。

USE msdb;

GO

EXEC dbo.sp_add_job

@job_name = N'Run Your Job Name',

@description = N'Your Job Description';

GO

一旦我们创建了作业,它将显示在您的SQL Server对象资源管理器中,您可以扩展SQL Server代理节点以访问。 该节点下有几个文件夹,包括作业。

3.2 新建步骤

要在作业中添加步骤,请单击该作业,右键单击并选择“属性”。 在该窗口中,您可以设置作业相关的各种选项以及作业的步骤。 若要添加新步骤,请点击“新建”按钮。

在新的步骤窗口中,您需要指定以下信息:

步骤名称

步骤描述

要运行的程序或代码

自动运行时间表(触发器)

以下是添加一个简单步骤的示例:

USE msdb;

GO

EXEC sp_add_jobstep

@job_name = N'Run Your Job Name',

@step_name = N'Step 1',

@command=N'C:\YourPath\YourFile.bat',

@on_success_action = 1,

@on_fail_action = 2;

GO

这个SQL脚本在先前的作业中添加了一个名为“Step 1”的步骤。 步骤调用C:\ YourPath \ YourFile.bat文件,并在此文件执行后立即返回成功状态。

4.创建触发器

下一步是创建运行时间表,或称之为触发器。 触发器是作业执行的计划和起始点,可以为其提供周期表或特定日期和时间。 通过将触发器分配给作业步骤,可以自动开启和结束作业。 以下是创建触发器的基本步骤。

4.1 创建新的运行时间表

要创建新的运行时间表,请打开新的SQL Server代理文件夹以访问触发器。在触发器下,右击运行时间表并选择“新建日程安排”,如下图所示

重要提示:要创建运行时间表,您需要在Accuracy中指定可用运行选项之一。可用的运行选项包括风格、包括一个起始日期和结束日期的运行日期和时间、重复频率。

4.2 分配到步骤

通过创建一个调用步骤的触发器来指定何时运行作业,以下是示例代码,使作业在每天的特定时间运行。

USE msdb ;

GO

EXEC dbo.sp_add_jobserver

@job_name = N'Run Your Job Name';

GO

USE msdb ;

GO

EXEC dbo.sp_add_jobschedule

@job_name = N'Run Your Job Name',

@name = N'Your Schedule Name',

@enabled = 1,

@freq_type = 4,

@freq_interval = 1,

@freq_subday_type = 1,

@freq_subday_interval = 1,

@freq_relative_interval = 0,

@freq_recurrence_factor = 1,

@active_start_date = 20210801,

@active_end_date = 99991231,

@active_start_time = 003000,

@active_end_time = 235959;

GO

USE msdb ;

GO

EXEC dbo.sp_attach_schedule

@job_name = N'Run Your Job Name',

@schedule_name = N'Your Schedule Name';

GO

这个SQL脚本使作业每天在早上3:30运行。 它向主数据库添加了一个新的运行时间表,并将其附加到作业中。

5.管理和监视作业

关于自动化作业运行,SQL Server提供了大量的管理和监控工具来跟踪运行情况。 以下是一些基本的SQL Server Management Studio和Transact-SQL命令。

5.1 查看作业状态

查询MSDB系统数据库中的作业查看作业的状态和最近的运行日期和时间。

USE msdb;

GO

SELECT j.name JobName,

s.last_run_date LastRunDate,

s.last_run_time LastRunTime,

CASE

WHEN s.last_run_outcome = 0 THEN 'Failed'

WHEN s.last_run_outcome = 1 THEN 'Success'

WHEN s.last_run_outcome = 2 THEN 'Retry'

WHEN s.last_run_outcome = 3 THEN 'Canceled'

WHEN s.last_run_outcome = 4 THEN 'In progress'

ELSE 'Unknown'

END AS LastRunOutcome

FROM dbo.sysjobs j

LEFT JOIN dbo.sysjobsteps s ON j.job_id = s.job_id

WHERE j.enabled = 1;

该查询标识在MSDB中启用的所有作业,并为每个作业列出最后运行日期和时间,以及运行结果。

5.2 查看作业历史

在SQL Server代理下,选择“作业历史记录”文件夹。 这将打开历史窗口,其中包含所有作业的完整历史记录。

5.3 暂停、禁用或删除作业

右键单击作业,可以选择对其执行几个不同的操作。 暂停作业,禁用作业或删除作业。

6.总结

在这篇文章中,我们介绍了如何在MSSQL服务器上创建自动文件运行环境,包括创建作业和触发器,并使用不同的工具来管理和监视作业。 这个特定的任务可以自动运行任何文件或程序。 在实践中,您可以扩展此方法,并根据自己的要求和需求调整实现方式。

数据库标签