我要用程序控制数据库的定时备份根据用户设置的时间(每天,每周,每月)来定时备份数据库我现在做了一个winform程序,让其一直在服务端运行,调用T—sql存储过程建立数据库作业 时间调度来定时备份数据库但是我点开始作业的时候老是报错 不能执行作业  新建成功的作业要怎样用T-sql语句来开始作业啊  如果是在asp.net中直接设置定时备份的时间的话有没有办法可以实现啊
有做过的实例的话可以发我不  QQ1021695829  有的话请发我邮箱 谢谢了
C#调用的

解决方案 »

  1.   

    把程序做成windows服务 定时执行 就行了
      

  2.   

    详细点呗 关于windows服务  不是很懂
      

  3.   

    sql server JOB
    创建时就可设置什么时间启动
    window服务timer定时执行
      

  4.   

    做成windows服务!!服务相关文章http://wenku.baidu.com/view/a5f92308763231126edb1132.html或是利用SQL自身作业!!
      

  5.   

    我现在是用的sql作业啊  关键是新建作业建成功了 就能执行么 是启用状态 但是我看作业没有开始执行啊
    也不知道怎么回事  有没实际例子参考下啊
      

  6.   

    如果定时调用:要用window服务timer定时执行,可能会用到线程方面的知识。。
    如果是数据库方面的,可以用SqlServer的作业,去执行存储过程。。
      

  7.   

    是执行的存储过程啊 但是我的存储过程只是新建作业和时间调度 新建成功了 但是他并没有开始执行作业啊
    偶很郁闷 新建成功了 咋不能执行呢 说是要用add_jobserver来建立作业与作业服务器的关联  
    郁闷中  高手 快来啊
      

  8.   

    而且我去执行 add_jobserver  的时候提示找不到此存储过程 在数据库中都没有这个系统存储过程啊
    郁闷中 自己顶
      

  9.   

    有没有启动“SQLSERVERAGENT”服务?
      

  10.   

     我想也是的
    SQL既然有备份功能 
    我想就能调取这串命令
      

  11.   

    BACKUP DATABASE MyOA TO  DISK = 'C:/MyOA.bak' with init
    这个是备份的命令   这个是调用存储过程建立作业
    BACKUP DATABASE MyOA TO  DISK = 'C:/MyOA.bak' with init  exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'
    每月备份
      

  12.   

    你可以设置好你的作业,然后通过作业自动生成脚本,每次只要修改这个脚本的调度时间,然后再运行,就可以实现。如下所示:
    -- 2010-8-16/13:59 上生成的脚本
    -- 由: test
    -- 服务器: (LOCAL)BEGIN TRANSACTION            
      DECLARE @JobID BINARY(16)  
      DECLARE @ReturnCode INT    
      SELECT @ReturnCode = 0     
    IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1 
      EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]'  -- 删除同名的警报(如果有的话)。
      SELECT @JobID = job_id     
      FROM   msdb.dbo.sysjobs    
      WHERE (name = N'test')       
      IF (@JobID IS NOT NULL)    
      BEGIN  
      -- 检查此作业是否为多重服务器作业  
      IF (EXISTS (SELECT  * 
                  FROM    msdb.dbo.sysjobservers 
                  WHERE   (job_id = @JobID) AND (server_id <> 0))) 
      BEGIN 
        -- 已经存在,因而终止脚本 
        RAISERROR (N'无法导入作业“test”,因为已经有相同名称的多重服务器作业。', 16, 1) 
        GOTO QuitWithRollback  
      END 
      ELSE 
        -- 删除[本地]作业 
        EXECUTE msdb.dbo.sp_delete_job @job_name = N'test' 
        SELECT @JobID = NULL
      END BEGIN   -- 添加作业
      EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'test', @owner_login_name = N'test', @description = N'没有可用的描述。', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback   -- 添加作业步骤
      EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'step1', @command = N'BACKUP DATABASE master TO DISK = ''C:/master.bak'' with init', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
      EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1   IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback   -- 添加作业调度
      EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'Seq', @enabled = 1, @freq_type = 4, @active_start_date = 20100816, @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback   -- 添加目标服务器
      EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)' 
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END
    COMMIT TRANSACTION          
    GOTO   EndSave              
    QuitWithRollback:
      IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION 
    EndSave: 
      

  13.   

    这不是调用了 add_jobserver存储过程么  但是我的数据库中没有这个存储过程啊