--触发器示例create trigger tr_process on 你的表
for insert --你的触发器类型
asdeclare @dbname sysname,@jobname sysname
,@date int,@time intselect @jobname='jobschedule1'
,@date=convert(varchar,getdate(),112)
,@time=replace(convert(varchar,dateadd(second,30,getdate()),108),':','')--如果作业已经存在,删除它
if exists(select 1 from msdb..sysjobs where name=@jobname)
exec msdb..sp_delete_job @job_name=@jobname --创建作业
exec msdb..sp_add_job @job_name=@jobname,@delete_level=1--创建作业步骤
declare @sql varchar(800)
select @sql='select 1' --你的作业要执行的语句
,@dbname=db_name()exec msdb..sp_add_jobstep @job_name=@jobname,
@step_name = '处理步骤',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5,  --重试次数
@retry_interval = 5   --重试间隔--创建调度
EXEC msdb..sp_add_jobschedule @job_name = @jobname, 
@name = '时间安排',
@enabled = 1, 
@freq_type = 1, 
@active_start_date = @date,
@active_start_time = @time-- 添加目标服务器
EXEC msdb.dbo.sp_add_jobserver 
@job_name = @jobname ,
@server_name = N'(local)' 
go

解决方案 »

  1.   

    太好了
    我只用了
    declare @dbname sysname,@jobschedulesname sysname
    ,@date int,@time intselect @jobschedulesname='jobschedule1'
    ,@date=convert(varchar,getdate(),112)
    ,@time=replace(convert(varchar,dateadd(second,20,getdate()),108),':','')if exists(select 1 from msdb..sysjobschedules where name=@jobschedulesname)
    exec msdb..sp_delete_jobschedule @job_name ='re_fill', @name=@jobschedulesname --创建调度
    EXEC msdb..sp_add_jobschedule @job_name = 're_fill', 
    @name = @jobschedulesname,
    @enabled = 1, 
    @freq_type = 1, 
    @active_start_date = @date,
    @active_start_time = @time
    因为re_fill这个job 是固定的,没必要每次去修改他
    还有我要求删的是作业调度而非作业,所以用的是sp_delete_jobschedule 
    太 zjcxc(邹建) 老兄了