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服务器上创建自动文件运行环境,包括创建作业和触发器,并使用不同的工具来管理和监视作业。 这个特定的任务可以自动运行任何文件或程序。 在实践中,您可以扩展此方法,并根据自己的要求和需求调整实现方式。