如何在没有作业运行时自动停止 SQL Server 代理?

2023-12-07

我在一个实例中有大约 40 个不同的 SQL Server 作业。他们都有不同的时间表。有些每天运行一次,有些每两分钟运行一次,有些每五分钟运行一次。如果我需要停止 sql server 代理,如何找到没有作业运行的最佳时间,这样我就不会中断任何作业?


当没有作业运行时,如何找到最佳时间,这样我就不会中断任何作业?

您基本上想要找到一个好的窗口来执行一些维护。@马克斯弗农已经在博客上介绍过它here有一个方便的脚本

/*
      Shows gaps between agent jobs
-- http://www.sqlserver.science/tools/gaps-between-sql-server-agent-jobs/
-- requires SQL Server 2012+ since it uses the LAG aggregate.
 Note: On SQL Server 2005, SQL Server 2008, and SQL Server 2008 R2, you could replace the LastEndDateTime column definition with:

       LastEndDateTime = (SELECT TOP(1) s1a.EndDateTime FROM s1 s1a WHERE s1a.rn = s1.rn - 1)
*/
DECLARE @EarliestStartDate DATETIME;
DECLARE @LatestStopDate DATETIME;
SET @EarliestStartDate = DATEADD(DAY, -1, GETDATE());
SET @LatestStopDate = GETDATE();
;WITH s AS 
(
    SELECT StartDateTime = msdb.dbo.agent_datetime(sjh.run_date, sjh.run_time)
          , MaxDuration = MAX(sjh.run_duration)
    FROM msdb.dbo.sysjobs sj 
          INNER JOIN msdb.dbo.sysjobhistory sjh ON sj.job_id = sjh.job_id
    WHERE sjh.step_id = 0
        AND msdb.dbo.agent_datetime(sjh.run_date, sjh.run_time) >= @EarliestStartDate
        AND msdb.dbo.agent_datetime(sjh.run_date, sjh.run_time) < = @LatestStopDate
    GROUP BY msdb.dbo.agent_datetime(sjh.run_date, sjh.run_time)
    UNION ALL
    SELECT StartDate = DATEADD(SECOND, -1, @EarliestStartDate)
        , MaxDuration = 1
    UNION ALL 
    SELECT StartDate = @LatestStopDate
        , MaxDuration = 1
)
, s1 AS 
(
SELECT s.StartDateTime
    , EndDateTime = DATEADD(SECOND, s.MaxDuration - ((s.MaxDuration / 100) * 100)
        + (((s.MaxDuration - ((s.MaxDuration / 10000) * 10000)) 
                    - (s.MaxDuration - ((s.MaxDuration / 100) * 100))) / 100) * 60
        + (((s.MaxDuration - ((s.MaxDuration / 1000000) * 1000000)) 
                    - (s.MaxDuration - ((s.MaxDuration / 10000) * 10000))) / 10000) * 3600, s.StartDateTime)
FROM s
)
, s2 AS
(
    SELECT s1.StartDateTime
        , s1.EndDateTime
        , LastEndDateTime = LAG(s1.EndDateTime) OVER (ORDER BY s1.StartDateTime)
    FROM s1 
)
SELECT GapStart = CONVERT(DATETIME2(0), s2.LastEndDateTime)
    , GapEnd = CONVERT(DATETIME2(0), s2.StartDateTime)
    , GapLength = CONVERT(TIME(0), DATEADD(SECOND, DATEDIFF(SECOND, s2.LastEndDateTime, s2.StartDateTime), 0))
FROM s2 
WHERE s2.StartDateTime > s2.LastEndDateTime
    ORDER BY s2.StartDateTime;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有作业运行时自动停止 SQL Server 代理? 的相关文章

随机推荐

  • matplotlib轮廓图中的对称对数色阶

    如何创建具有符号对数 对称对数 比例的等高线图 即显示负值和正值的对数刻度 一种可能性是解决这个例子 http matplotlib org examples pylab examples contourf log html 这给出了对数刻
  • 如何停止 SAS 中的“锁不可用于 <数据集>”错误?

    运行 SAS 程序时 我总是收到 锁不可用 错误 如果我在一个程序中多次对同一数据集执行操作 通常会发生这种情况 研究此错误后 我了解到这意味着两个程序正在尝试访问同一数据集 换句话说 这类似于尝试打开其他人或您自己已在使用的文档 这是给我
  • Wait() 和 Notify() 概念 - Java 多线程

    class Q volatile boolean valueSet false volatile int n synchronized int get if valueSet try wait catch InterruptedExcept
  • Spring Data MongoDB - 与其他集合的聚合

    我正在尝试Spring Boot v 2 1 3 RELEASE 和 Spring Data MongoDB 由于关键要求 我必须像下面这样进行建模 假设员工了解多种技术 但主要语言是任何人 因此 我决定将技术集合分开 并在员工集合中以某种
  • 使用“delete this”在多大程度上符合C++标准?

    在对象中实现引用计数时 释放并可能删除对象 原语通常是这样实现的 void CObject Release referenceCount if referenceCount 0 delete this 首先 delete this看起来很吓
  • 如何为 Android 生成新的第二个 Google Maps API 密钥?

    我需要为我的 Android 应用程序生成一个新的 API 密钥 但是当我按照上面的步骤操作时http code google com android add ons google apis mapkey html它总是给我相同的密钥 我认
  • Python - 在守护进程内调用 multiprocessing.pool

    我有一个Python生成守护进程的脚本 在这个过程中 我正在使用multiprocessing pool to run 1 to 4同时进行处理 当我在守护进程之外运行它时 它工作得很好 即 当我设置run from debugger Tr
  • 即时运行不适用于 android studio 3.3 更新

    到目前为止 我已经在 Android 7 的 Nexus 5 上使用即时运行 没有任何问题 昨天我将Android Studio更新到稳定版本3 3 从那时起 Instant Run 就不起作用了 我总是收到以下警告 选择卸载以前版本的选项
  • 如何获取某个 URL 的总点赞数(点赞数和分享数)?

    我在页面上放置的 Likes 插件会显示直接单击按钮的次数 以及页面 URL 被共享或点赞被评论的次数 不过 当我使用 Graph API 查看我的对象时 它只显示直接 点赞 点击的数量 这是一个示例对象 id 17678692xxxxxx
  • python/scipy 中的多元样条插值?

    是否有库模块或其他简单的方法来在 python 中实现多元样条插值 具体来说 我在规则间隔的三维网格上有一组标量数据 我需要在分散在整个域中的少量点处对其进行插值 对于二维 我一直在使用scipy interpolate RectBivar
  • 将字符串发送到serial.to_bytes不起作用

    我正在尝试发送包含命令的字符串变量 像这样 value 0x31 0x0a 0x32 0x0a 0x33 0x0a self s write serial to bytes value 上面那个失败了 不会给出任何错误 但是当我发送这样的值
  • ASP.NET Core 6:允许Azure AD身份验证和本地身份验证

    我正在开发一个程序 该程序允许用户以两种方式进行身份验证 他们可以通过任何电子邮件创建和使用本地 自制 帐户 或者他们可以仅对我们的组织使用 Azure AD OAuth 无论使用哪种身份验证方法 用户都应受到相同的对待并返回 trueco
  • 令人困惑的 gprof 输出

    I ran gprof在一个 C 程序上16 637s 根据time 我得到了第一行输出 cumulative self self total time seconds seconds calls s call s call name 31
  • 如何在 ASP.Net MVC 中的文本框中显示水印而不是值?

    在我看来我有 pounds when I run the application I got in my text box When I delete the value from the textbox it will show wate
  • 在端口 587 (TLS) 上使用 CDO 发送电子邮件时出错

    在端口 587 使用 TLS 安全协议的端口 上使用 CDO 发送邮件有什么技巧吗 这是我的 C 代码 CDO IMessagePtr iMsg uuidof CDO Message CDO IConfigurationPtr iConf
  • MicrosoftAccount 访问 Azure 移动服务 API 的桌面客户端流程

    我关注了阿德里安 霍尔斯book创建具有移动服务 API 后端的跨平台应用程序 我已成功从 Android iOS 和桌面 WPF 客户端对后端进行不安全的访问 我将继续使用 Authorize 属性为 API 添加安全性 我想使用 Mic
  • 如果未设置用户电子邮件,如何进行 git 块提交?

    我有单独的电子邮件地址用于工作项目和开源项目 并且我想确保为每种类型的项目使用正确的电子邮件地址 显然 解决方案是适当地设置存储库特定配置 不幸的是 我一直忘记设置它 直到我进行了一些提交 所以我使用全局 user email 配置 如果与
  • Perl 精确字符串匹配

    我有以下 Perl 代码来提示用户回答是 否 如果用户输入除 是 否 以外的任何内容 请继续提示 没有其他词是可以接受的 我不知道为什么这段代码不起作用 我用答案 noooooo 进行了测试 我希望它再次提示 但它没有进入 while 循环
  • 您可以在Python中请求MacOS屏幕录制权限吗

    有没有办法让 MacOS Python 应用程序 使用 Pillow 和 ImageGrab 像其他 C 应用程序一样请求屏幕录制权限 看https developer apple com documentation avfoundatio
  • 如何在没有作业运行时自动停止 SQL Server 代理?

    我在一个实例中有大约 40 个不同的 SQL Server 作业 他们都有不同的时间表 有些每天运行一次 有些每两分钟运行一次 有些每五分钟运行一次 如果我需要停止 sql server 代理 如何找到没有作业运行的最佳时间 这样我就不会中