怎樣設置允許一個批次執行的最大時間,為了防止job死鎖, 超出設置的逾時時間則判定job為執行失敗.

解决方案 »

  1.   

    設置允許一個批次執行的最大時間------------------------------------这个功能SqlServer中还没有,
    如果出现死鎖,肯定会抛出一个错误,这个job的执行步骤自然就停下来了如果觉得运行的时间长了想听下来,可以判断 sysjobschedules 中该 job 的下次运行时间和当前时间相差多少,只要你的 job 是自动运行不是手点的运行,那么这个判断应该能判断出来具体运行了多长时间,然后你可以使用 msdb.dbo.sp_stop_job 存储过程将该 job 停下来
      

  2.   

    使用 query governor cost limit 选项指定查询可以运行的时间段上限。查询开销是指在特定硬件配置中完成查询所需的估计占用时间(秒)。 如果为该选项指定一个非零、非负的数值,则查询调控器将不允许执行估计成本超过该值的查询。如果为该选项指定 0(默认值),则将关闭查询调控器,并允许所有查询在没有任何时间限制的条件下运行。如果用 sp_configure 来更改 query governor cost limit 的值,则所更改的值将在整个服务器范围内有效。若要在每个连接基础上更改此值,请使用 SET QUERY_GOVERNOR_COST_LIMIT 语句。query governor cost limit 选项是一个高级选项。如果使用 sp_configure 系统存储过程来更改该设置,则只有在 show advanced options 设置为 1 时才能更改 query governor cost limit。更改后的设置将立即生效,而不需要重新启动服务器。
      

  3.   

    上述配置是全局的
    程序可以设置 commandtimeout 
    JOB中没有超时设置