如题

解决方案 »

  1.   

    通过sql自带的作业可以实现。
      

  2.   

    数据库中的作业一般用来批处理,定时出发参照ide的用户导航界面很好实现的,lz摸索试试
      

  3.   

    RE:通过sql自带的作业可以实现。
    问题是现在要在asp.net中来创建和删除谢谢
      

  4.   

    可以把建立和删除作业的语句放在SQL SERVER的存储过程中,在ASP.NET中调用相应的存储过程即可。
      

  5.   

    --定义创建作业
    DECLARE @jobid uniqueidentifier, @jobname sysname
    SET @jobname = N'作业名称'IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name=@jobname)
    EXEC msdb.dbo.sp_delete_job @job_name=@jobnameEXEC msdb.dbo.sp_add_job
    @job_name = @jobname,
    @job_id = @jobid OUTPUT--定义作业步骤
    DECLARE @sql nvarchar(4000),@dbname sysname
    SELECT @dbname=DB_NAME(),  --作业步骤在当前数据库中执行
    @sql=N'--作业步骤内容'  --一般定义的是使用TSQL处理的作业,这里定义要执行的Transact-SQL语句
    EXEC msdb.dbo.sp_add_jobstep
    @job_id = @jobid,
    @step_name = N'作业步骤名称',
    @subsystem = 'TSQL', --步骤的类型,一般为TSQL
    @database_name=@dbname,
    @command = @sql--创建调度(使用后面专门定义的几种作业调度模板)
    EXEC msdb..sp_add_jobschedule
    @job_id = @jobid,
    @name = N'调度名称',
    @freq_type=4,                --每天
    @freq_interval=1,            --指定每多少天发生一次,这里是1天.
    @freq_subday_type=0x8,       --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次
    @freq_subday_interval=1,     --重复周期数,这里每小时执行一次
    @active_start_date = NULL,   --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD
    @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD
    @active_start_time = 00000,  --作业执行的开始时间,格式为HHMMSS
    @active_end_time = 235959    --作业执行的停止时间,格式为HHMMSS
      

  6.   

    c#实现:
    string strBackup = string.Empty;
    SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
    SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
    SQLDMO.Job oJob = new SQLDMO.JobClass();
    SQLDMO.JobSchedule oJobSchedule = new SQLDMO.JobScheduleClass();
    SQLDMO.JobStep oJobStep = new SQLDMO.JobStepClass();
    try
    {oSQLServer.LoginSecure = false;
    oSQLServer.Connect(this.txtComputer.Text,this.txtUser.Text,this.txtPassword.Text);oJobSchedule.Name = "a";
    oJobSchedule.Schedule.ActiveStartDate = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
    oJobSchedule.Schedule.ActiveStartTimeOfDay = 230000;
    oJobSchedule.Schedule.FrequencyType = SQLDMO.SQLDMO_FREQUENCY_TYPE.SQLDMOFreq_Daily;
    oJobSchedule.Schedule.FrequencyInterval=1;strBackup = "declare @strDateTime varchar(100) " +
    "select @strDateTime=convert(char(8),getdate(),112)+ '_' +replace(convert(varchar(10),getdate(),108),':','') "+
    "declare @str varchar(100) " +
    "set @str = 'd:\\" + this.txtDatabase.Text + "_'+@strDateTime+'.bak' " +
    "backup database " + this.txtDatabase.Text  + " to disk=@str";oJobStep.Command = strBackup;
    oJobStep.DatabaseName = this.txtDatabase.Text;
    oJobStep.StepID =1;
    oJobStep.Name = "step" + DateTime.Now.ToString("yyyyMMddHHmmss");
    oJob.Name ="job" + DateTime.Now.ToString("yyyyMMddHHmmss");oSQLServer.JobServer.Jobs.Add(oJob);
    oJob.JobSteps.Add(oJobStep);
    oJob.JobSchedules.Add(oJobSchedule);oJob.ApplyToTargetServer("demo");MessageBox.Show("任务添加成功");
    }
    catch
    {
    throw;
    }
    finally
    {
    oSQLServer.DisConnect();
    }
      

  7.   

    1.用SQLDMO对象方法
    2.Sql Server 自带的作业备份
    3.自己建个windows服务来执行(vs2005下做windows服务很方便)