if exists ( select * from dbo.sysobjects where id = object_id(N ' [dbo].[p_JobSet] ') and OBJECTPROPERTY(id, N ' IsProcedure ') = 1) drop procedure [ dbo ]. [ p_JobSet ] GO /**/ /* --定时调用存储过程 创建一个在指定时间,调用指定存储过程的作业 作业执行完成后会自动删除--邹建 2004.07-- */ /**/ /* --调用示例 exec p_JobSet 'master.dbo.xp_cmdshell','2004-1-1 10:30'-- */ create proc p_JobSet @prorcname sysname, -- 要调用定时调用的存储过程名,如果不在当前库中,则用:库名.所有者名.存储过程名 @job_date datetime -- 存储过程的执行时间(包括时间信息) as declare @dbname sysname, @jobname sysname , @date int, @time int select @jobname = ' 定时发送作业_ ' + cast( newid() as varchar( 36)) , @date = convert( varchar, @job_date, 112) , @time = replace( convert( varchar, @job_date, 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 = ' exec ' + @prorcname , @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
本文转自高海东博客园博客,原文链接http://www.cnblogs.com/ghd258/archive/2005/10/24/260698.html,如需转载请自行联系原作者