while @@fetch_status=0 begin exec('kill '+@spid) fetch next from #spid into @spid end close #spid deallocate #spid end
--恢复数据库 exec(@sql)
go
/*4.--创建作业
*/
/*--调用示例
--每月执行的作业 exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'
--每周执行的作业 exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'
--每日执行的作业 exec p_createjob @jobname='a',@sql='select * from syscolumns'
--每日执行的作业,每天隔4小时重复的作业 exec p_createjob @jobname='b',@sql='select * from syscolumns',@fsinterval=4
--*/ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_createjob]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_createjob] GO
create proc p_createjob @jobname varchar(100), --作业名称 @sql varchar(8000), --要执行的命令 @dbname sysname='', --默认为当前的数据库名 @freqtype varchar(6)='day', --时间周期,month 月,week 周,day 日 @fsinterval int=1, --相对于每日的重复次数 @time int=170000 --开始执行时间,对于重复执行的作业,将从0点到23:59分 as if isnull(@dbname,'')='' set @dbname=db_name()
--创建调度 declare @ftype int,@fstype int,@ffactor int select @ftype=case @freqtype when 'day' then 4 when 'week' then 8 when 'month' then 16 end ,@fstype=case @fsinterval when 1 then 0 else 8 end if @fsinterval<>1 set @time=0 set @ffactor=case @freqtype when 'day' then 0 else 1 end