SQL Server 作业(JOB)创建、修改和删除 SQL脚本
(2013-10-25 11:43:24)
标签:
sqlserver作业脚本sqlserver创建作业sql删除作业sql查询作业信息sql修改作业信息 |
分类: 数据库学习 |
一、创建作业(JOB)
-- SQL SERVER2000 作业(JOB)T-SQL创建脚本
-- author: jiajia
-- 服务器: (local)
--参数说明:
-- daily_pr_stat_test (作业名称:测试JOB名称,可根据需求进行修改)
-- @command = N'exec pr_stat_test'
(作业调用可执行存储过程或SQL语句:pr_stat_test--执行数据统计的可运行存储过程,当然你也可以换成可执行的SQL语句)
-- @database_name = N'test'
(运行数据库:test--存储过程所在库)
-- @active_start_date =
20121207
(作业执行的开始日期:为NULL时表示当前日期,格式为YYYYMMDD。20121207--该作业开始执行日期)
-- @active_end_date =
99991231 (作业执行的停止日期:默认为99991231,格式为YYYYMMDD)
-- @active_start_time =
84100 (作业执行的开始时间:格式为HHMMSS,84100--该作业开始执行时间)
-- @active_end_time =
235959 (作业执行的停止时间:格式为HHMMSS,235959--该作业执行结束时间)
-- @freq_type = 4
(作业执行时间的值:1--一次;4--每天;8--每周;16--每月;32--每月,相对于 freq
interval;64--SQLServerAgent 服务启动时运行;128--计算机空闲时运行)
-- @freq_interval = 1
(重复执行次数:1--每天执行一次)
-- @freq_subday_type = 1
(重复方式:0x1--在指定的时间;0x2--秒;0x4--分钟;0x8--小时)
--
@freq_subday_interval = 0 (重复周期数:0--不重复,1--每小时执行一次)
--
@freq_relative_interval = 0
(第几个相对时间执行:允许的值为1,2,4,8代表第1~4个相对时间,16表示最后一个相对时间)
--
@freq_recurrence_factor = 0 (作业的两次计划执行之间的间隔周数或月数:只有 freq_type 为
8、16 或 32 时,才会使用 freq_recurrence_factor)
BEGIN
TRANSACTION
--判断本地作业类别是否存在,不存在则添加
IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name =
N'[Uncategorized (Local)]') < 1
--判断作业是否存在,如存在则提示处理,不存在则新建
IF (SELECT COUNT(*) FROM msdb.dbo.sysjobs WHERE name =
N'daily_pr_stat_test') > 0
ELSE
BEGIN
@description = N'没有可用的描述。', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page
= 0, @notify_level_netsend = 0, @notify_level_eventlog = 2,
@delete_level= 0
@database_name = N'test', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0,
@retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0,
@on_fail_action = 2
20121207, @active_start_time = 84100, @freq_interval = 1, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0,
@freq_recurrence_factor = 0, @active_end_date = 99991231,
@active_end_time = 235959
END
COMMIT
TRANSACTION
GOTO
QuitWithRollback:
EndSave:
二、删除作业(JOB)
1、使用 SQL Server Management Studio删除
2、使用SQL语句删除
三、查看作业(JOB)的相关信息
-- 查看作业是否存在
SELECT COUNT(*) FROM msdb.dbo.sysjobs WHERE name =
N'daily_pr_stat_test'
--查询作业运行状态信息(run_status: 0=出错失败,1=成功,3=已取消,5=状态未知),SQL
Server2005以上
exec msdb.dbo.sp_help_jobactivity
-- 查看数据库中当前定义的所有作业的全部属性
exec msdb..sp_help_job
--查看作业历史
select a.*,b.name
from msdb.dbo.sysjobhistory a
inner join msdb.dbo.sysjobs b
on a.job_id=b.job_id
and b.name='daily_pr_stat_test'
--and
order
-- 查看指定作业的全部属性
exec msdb..sp_help_job @job_name=N'daily_pr_stat_test'
-- 可查看执行语句或者存储过程等等
exec msdb..sp_help_jobstep @job_name=N'daily_pr_stat_test'
-- 查看作业历史执行时间等信息
A、SQL Server2000版本中:
SELECT
FROM
WHERE
and
ORDER
B、SQL Server2005以上版本中:
SELECT
FROM
WHERE
ORDER
四、修改指定作业(JOB)相关属性值
1、修改作业开始执行日期和时间
update a
set a.active_start_date='20141010',a.active_start_time='082000'
from msdb.dbo.sysschedules a,msdb.dbo.sysjobschedules b,msdb.dbo.sysjobs c
where a.schedule_id=b.schedule_id
and b.job_id=c.job_id
and c.name=N'daily_pr_stat_test'
2、修改指定作业下次执行时间
update
set
from
where
and
3、启用作业
exec msdb.dbo.sp_update_job @job_name='daily_pr_stat_test',@enabled=1
4、禁用作业
exec msdb.dbo.sp_update_job @job_name='daily_pr_stat_test',@enabled=0
5、立即运行作业
exec msdb.dbo.sp_start_job N'daily_pr_per_test'
6、立即停止正在运行中的作业(可能导致不可预知的结果)
exec msdb.dbo.sp_stop_job N'daily_pr_per_test'
7、修改作业其他参数
exec msdb..sp_update_job @job_name=N'daily_pr_stat_test'
更多相关参数请参考:http://technet.microsoft.com/zh-cn/magazine/ms188745(SQL.105).aspx
注:更多详细参数说明请参考:http://msdn.microsoft.com/zh-cn/library/ms182079(v=sql.105).aspx或者http://msdn.microsoft.com/zh-cn/library/ms187354(v=sql.105).aspx/css