"周期性地执行一段代码" 是否考虑用job?

解决方案 »

  1.   

    好像没有什么可行的方案,参考这个帖子:
    http://topic.csdn.net/u/20070907/09/b59aeafc-5226-46b6-bc85-7f094404c203.html
      

  2.   

    在存储过程中使用waitfor和go,目的是要周期性地执行一段代码. 
    如何让该存储过程在数据库系统启动时就被正确地调用? 或者,有没有别的更好的方法,周期性地执行一段代码?
    定制作业,每隔N小时(分钟 or 秒)执行一次,
      

  3.   

    在存储过程中使用waitfor和go,目的是要周期性地执行一段代码.   
    如何让该存储过程在数据库系统启动时就被正确地调用?   或者,有没有别的更好的方法,周期性地执行一段代码? 1、不用 waitfor go
    2、建立存储过程,实现你要执行一段代码的功能
    3、定制作业,按照你的需求调度时间,执行存储过程
      

  4.   

    或者,有没有别的更好的方法,周期性地执行一段代码?
    -----------------------------------------------
    如大家上面建议的,使用JOB是最好的,可以很详细的控制运行周期
    如何让该存储过程在数据库系统启动时就被正确地调用? 
    -----------------------------------------------
    数据库系统并不需要频繁启动,不清楚为什么LZ有这种需求
    如果一定要在数据库启动之后做某些操作的话,
    可以考虑用脚本的方式,写个.bat文件
    net start <数据库实例服务名称>
    sqlcmd <运行你的.sql脚本>
    不知道还有没有其他好办法
      

  5.   

    sp_procoption
    设置过程选项。语法
    sp_procoption [ @ProcName = ] 'procedure'
        , [ @OptionName = ] 'option'
        , [ @OptionValue = ] 'value'参数
    [@ProcName =] 'procedure'是要为其设置或查看选项的过程名。procedure 为 nvarchar(776) 类型,无默认值。[@OptionName =] 'option'要设置的选项的名称。option 的唯一值是 startup,该值设置存储过程的自动执行状态。设置为自动执行的存储过程会在每次 Microsoft® SQL Server™ 启动时运行。[ , [ @OptionValue = ] 'value' ]表示选项是设置为开(true 或 on)还是关(false 或 off)。value 为 varchar(12) 类型,无默认值。返回代码值
    0(成功)或错误号(失败)权限
    执行权限默认授予 sysadmin 固定服务器角色的成员。启动过程必须属于 master 数据库的所有者。
      

  6.   

    在SQL_SERVER启动时,自动执行存储过程使用系统存储过程sp_procoption就可以将master数据库中的,不带参数的存储过程设置为自动执行。语法为:
    sp_procoption [ @ProcName = ] 'procedure' , [ @OptionName = ] 'option' , [ @OptionValue = ] 'value'参数
    [@ProcName =] 'procedure'是要为其设置或查看选项的过程名。procedure 为 nvarchar(776) 类型,无默认值。[@OptionName =] 'option'要设置的选项的名称。option 的唯一值是 startup,该值设置存储过程的自动执行状态。设置为自动执行的存储过程会在每次 Microsoft® SQL Server™ 启动时运行。[ , [ @OptionValue = ] 'value' ]表示选项是设置为开(true 或 on)还是关(false 或 off)。value 为 varchar(12) 类型,无默认值。返回代码值
    0(成功)或错误号(失败)权限
    执行权限默认授予 sysadmin 固定服务器角色的成员。启动过程必须属于 master 数据库的所有者。例如:exec sp_procoption 'ap_ProcName','startup','on'  -- 将存储过程ap_ProcName设置为自动启动,'off'可关闭其自动启动的属性。-- 也可以在【企业管理器】中找到master数据库中的这个存储过程(不带参数) -->右键-->属性-->勾选[每当sql server启动时执行]。 
    再配合WaitFor语句,则可以自动执行那些周期性的任务,例如定时统计或备份。而不需要使用【企业管理器】中的代理的作业或数据库备份计划。