--创建作业来实现就行了.--创建作业
exec msdb..sp_add_job @job_name='数据处理'--创建作业步骤
declare @sql varchar(800),@dbname varchar(250)
select @sql='exec p_createxml'  --数据处理的命令
,@dbname=db_name() --执行数据处理的数据库名exec msdb..sp_add_jobstep @job_name='数据处理',
@step_name = '数据同步',
@subsystem = 'TSQL',
@database_name=@dbname,
    @command = @sql,
@retry_attempts = 5,  --重试次数
@retry_interval = 5   --重试间隔--创建调度
EXEC msdb..sp_add_jobschedule @job_name = '数据处理', 
   @name = '时间安排',
   @freq_type = 4,  --每天
   @freq_interval = 1, --每天执行一次
   @active_start_time = 11000 --11点执行

解决方案 »

  1.   

    将你要处理的命令写成存储过程,然后在作业中调用,即修改下面的部分:
    --创建作业步骤
    declare @sql varchar(800),@dbname varchar(250)
    select @sql='exec p_createxml'  --数据处理的命令
    ,@dbname=db_name() --执行数据处理的数据
      

  2.   

    --或者手工创建作业企业管理器
    --管理
    --SQL Server代理
    --右键作业
    --新建作业
    --"常规"项中输入作业名称
    --"步骤"项
    --新建
    --"步骤名"中输入步骤名
    --"类型"中选择"Transact-SQL 脚本(TSQL)"
    --"数据库"选择执行命令的数据库
    --"命令"中输入要执行的语句
    --确定
    --"调度"项
    --新建调度
    --"名称"中输入调度名称
    --"调度类型"中选择你的作业执行安排
    --如果选择"反复出现"
    --点"更改"来设置你的时间安排
      

  3.   

    注意,设置了作业后,要将SQL Agent服务设置为自动启动.否则你的作业不会被执行.
      

  4.   

    谢谢zjcxc,步骤我大体了解了,但我不是很清楚在执行语句中怎么相互传递变量?例如我要先查询出缺勤人员,然后再将缺勤人员ID组插入表中,这个ID组用什么数据类型传递呢?如何传递?
      

  5.   

    一个语句就行了吧?为什么要传递?就好像这样:insert into 缺勤人员表select 人员id from 人员表
    where 人员id not in(
    select 人员id from 上班在勤 where 日期=getdate()
    union
    select 人员id from 迟到人员 where 日期=getdate()
    union 
    select 人员id from 请假人员 where 日期=getdate()
    ) a
      

  6.   

    有个新问题,我要在缺勤人员中插入ID和今天的日期,这样的话SQL该怎么写?
      

  7.   

    insert into 缺勤人员(人员id,日期) select 人员id,getdate() from ....或者在建缺勤人员表的时候,将日期的默认值设置为getdate(),插入的时候不为日期字段赋值就可以了.
      

  8.   

    非常感谢zjcxc,我明白了,谢谢
      

  9.   

    getdate()得到的是一个精确到毫秒的函数,这样的话我别的表里的日期是yyyymmdd的格式,不能比较了,请问怎么解决?
      

  10.   

    --去掉时间部分就行了.
    convert(varchar(10),getdate(),120)