定时作业的制定 企业管理器 
--管理 
--SQL Server代理 
--右键作业 
--新建作业 
--"常规"项中输入作业名称 
--"步骤"项 
--新建 
--"步骤名"中输入步骤名 
--"类型"中选择"Transact-SQL 脚本(TSQL)" 
--"数据库"选择执行命令的数据库 
--"命令"中输入要执行的语句: 
                      EXEC 存储过程名 ... --该存储过程用于创建表 --确定 
--"调度"项 
--新建调度 
--"名称"中输入调度名称 
--"调度类型"中选择你的作业执行安排 
--如果选择"反复出现" 
--点"更改"来设置你的时间安排  
然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 

解决方案 »

  1.   

    老大,你说的作业我也会,不过我这个调度比较特殊:
    简单一点就是我这个调度是根据EndTime来实现的,时间点在EndTime字段里面(是活动的,不是死的定时)。有没有一种触发器可以根据EndTime的时间点和当前时间对比来触发?
      

  2.   


    老大是net版的老熟人了,是不是sql server数据库里面没有这样的实现方法?
    那你可否告诉我在程序里面怎么做,这个时间段可是很长的,不可能用ajax吧?
      

  3.   

    当然是写windows服务后台运行了
      

  4.   

    主要是看你的数据时间间隔,用job或服务,有一个运行时间间隔
      

  5.   


    服务后台不是很稳定,最主要的是要把这个服务程序时刻都开着,遇上服务器重启就更麻烦了;我在想用没有办法用程序控制生成数据库作业的方法,思路是这样的,不知可行否:
    1.数据库添加记录的同时用程序自动生成一个数据库作业(用触发器实现,增加记录的时候触发,作业是定时间执行的);
    2.作业时间点以后自动删除(也就是自己删除自己)。sql server不是学得很好,不知可行否?各位老大来帮忙看看,谢谢!
      

  6.   

    sqlserver agent也是后台服务,稳定不稳定只是个人能力的问题了,服务器重启如果自己写服务器动不了sql的一样也启动不了。作业是可以用脚本添加,但是如果你数据很多的话就麻烦了。
      

  7.   

    现在我主要是想完全在数据库层实现这样一个需求,描述一下:同时生成两个作业:
    1.定时更新数据库作业:由程序控制生成,每增加一条数据库记录,就产生一个新的作业,用于控制到某一时间点执行置标志语句(每个作业只执行一次);
    2.定时删除1的作业:这个可以定时去执行,主要是控制上面已经执行完的作业。不知道这个在sql server里面可行否,高手进...
      

  8.   

    非常感谢 jinjazz,帮我看下14楼的需求可否可行?
      

  9.   

    你可以用sqlserver手动生成一个作业然后把脚本导出来,写道程序中去,类似 USE [msdb]
    GO
    /****** 对象:  Job [s]    脚本日期: 11/19/2008 15:59:48 ******/
    BEGIN TRANSACTION
    DECLARE @ReturnCode INT
    SELECT @ReturnCode = 0
    /****** 对象:  JobCategory [[Uncategorized (Local)]]]    脚本日期: 11/19/2008 15:59:48 ******/
    IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
    BEGIN
    EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollbackENDDECLARE @jobId BINARY(16)
    EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'ss', 
    @enabled=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=0, 
    @notify_level_netsend=0, 
    @notify_level_page=0, 
    @delete_level=0, 
    @description=N'无描述。', 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=N'sa', @job_id = @jobId OUTPUT
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    /****** 对象:  Step [s]    脚本日期: 11/19/2008 15:59:48 ******/
    EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'ss', 
    @step_id=1, 
    @cmdexec_success_code=0, 
    @on_success_action=1, 
    @on_success_step_id=0, 
    @on_fail_action=2, 
    @on_fail_step_id=0, 
    @retry_attempts=0, 
    @retry_interval=0, 
    @os_run_priority=0, @subsystem=N'TSQL', 
    @command=N'select getdate()', --此处sql语句
    @database_name=N'master', 
    @flags=0
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'ex', 
    @enabled=0, 
    @freq_type=1, 
    @freq_interval=0, 
    @freq_subday_type=0, 
    @freq_subday_interval=0, 
    @freq_relative_interval=0, 
    @freq_recurrence_factor=0, 
    @active_start_date=20081119, --此处日期
    @active_end_date=99991231, 
    @active_start_time=155920, --此处时间
    @active_end_time=235959
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
    IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    COMMIT TRANSACTION
    GOTO EndSave
    QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
    EndSave:
      

  10.   

    作业也只是调用sql语句,只要存储过程和sql语句能够执行的作业也都能执行