A-A+

使用TSQL创建作业

2007年11月10日 編程·程序設計 暂无评论 阅读 2,315 views 次

 

SQL代码
  1. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_createjob]'and OBJECTPROPERTY(id, N'IsProcedure') = 1)   
  2. drop procedure [dbo].[p_createjob]   
  3. GO   
  4.   
  5. create proc p_createjob   
  6. @jobname varchar(100),             --作业名称   
  7. @sql varchar(8000),                --要执行的命令   
  8. @serverName sysname='',            --job server名   
  9. @dbname sysname='',                --默认为当前的数据库名   
  10. @freqtype varchar(6)='day',        --时间周期,month 月,week 周,day 日   
  11. @fsinterval int=1,                 --相对于每日的重复次数   
  12. @time int=170000                   --开始执行时间,对于重复执行的作业,将从0点到23:59分   
  13. as  
  14. if isnull(@dbname,'')='' set @dbname=db_name()   
  15.   
  16. --创建作业   
  17. exec msdb..sp_add_job @job_name=@jobname   
  18.   
  19. --创建作业步骤   
  20. exec msdb..sp_add_jobstep @job_name=@jobname,   
  21.         @step_name = '数据处理',   
  22.         @subsystem = 'TSQL',   
  23.         @database_name=@dbname,   
  24.         @command = @sql,   
  25.         @retry_attempts = 5, --重试次数   
  26.         @retry_interval = 5  --重试间隔   
  27.   
  28. --创建调度   
  29. declare @ftype int,@fstype int,@ffactor int  
  30. select @ftype=case @freqtype when 'day' then 4   
  31.                                         when 'week' then 8   
  32.                                         when 'month' then 16 end  
  33.         ,@fstype=case @fsinterval when 1 then 0 else 8 end  
  34. if @fsinterval<>1 set @time=0   
  35. set @ffactor=case @freqtype when 'day' then 0 else 1 end  
  36.   
  37. EXEC msdb..sp_add_jobschedule @job_name=@jobname,    
  38.         @name = '时间安排',   
  39.         @freq_type=@ftype ,                        --每天,8 每周,16 每月   
  40.         @freq_interval=1,                          --重复执行次数   
  41.         @freq_subday_type=@fstype,                 --是否重复执行   
  42.         @freq_subday_interval=@fsinterval,         --重复周期   
  43.         @freq_recurrence_factor=@ffactor,   
  44.         @active_start_time=@time                   --下午17:00:00分执行   
  45.   
  46. if @servername=''  
  47. set @servername=@@servername   
  48. EXEC msdb..sp_add_jobserver @job_name = @jobname,    
  49.      @server_name = @servername   
  50.   
  51. go   
  52.   
  53. --调用   
  54. --每月执行的作业   
  55. exec p_createjob @jobname='mm'  
  56.                  ,@sql='insert A select ''AAA'''  
  57.                  ,@servername='FUDAN-OXI9Y1PYT'  
  58.                  ,@dbname='test'  
  59.                  ,@freqtype='month'  
  60.                  ,@time='000000'  

 

来源:http://blog.csdn.net/vivianfdlpw/archive/2005/09/27/490246.aspx

给我留言

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

Copyright © 寂寞部屋 保留所有权利.   Theme  Ality

用户登录