【问题标题】:What's the best way to implement a scheduled job using a windows service使用 Windows 服务实现计划作业的最佳方法是什么
【发布时间】:2009-05-04 12:00:24
【问题描述】:

我有一个偶尔在晚上运行的数据库作业,我需要一个 Windows 服务来定期轮询数据库,以便在 SQL 作业完成后做更多的工作。我正在寻找一个可靠的例子来编写一个可以优雅地失败而不会导致服务崩溃的调度程序。

【问题讨论】:

    标签: c# windows-services scheduling


    【解决方案1】:

    只需将其设为计划任务即可。看 windows service vs scheduled task

    【讨论】:

    • 那行不通,因为他希望它仅在 SQL 作业完成后运行
    • 他说“pool the database”我认为是“poll”的拼写错误,所以我的回答成立。
    • 是的,我的意思是轮询抱歉,但我宁愿拥有一个 Windows 服务,因为它更容易监控、记录事件......
    • 所以...你的意思是他应该轮询他的“负载过重”的 SQL Server 以查看它是否已完成。他们让烦人的轮询应用程序启动计划任务......似乎很好,直到您考虑代码量和轮询应用程序可能失败的方式,例如在另一台机器上启动一个 kob。 MSMQ 就是为这种情况而设计的。在我看来,你们正试图让它与一些泡泡糖和绳子一起工作。
    • 数据库没有承受重负载,因此轮询它不会造成特别的伤害,轮询会每小时发生一次,因此使用最简单的解决方案无需添加 MSMQ CLR 过程然后监控它是可行的我们。谢谢大家的帮助!!
    【解决方案2】:

    我会使用 MSMQ,在将消息添加到队列的作业中添加最后一步(如果可以,通过 ActiveX 脚本/COM 或 .net 调用)

    然后让您的服务监控队列。

    至于不使服务崩溃,这完全取决于您和错误处理等...

    【讨论】:

    • 我宁愿不向解决方案添加另一个依赖项,它已经是具有多个第三方库的相当大的 1MM+ 行代码......
    • 好吧,如果你想安装它,只需在最后添加一个 cmdexe 步骤,通过使用 sc technet.microsoft.com/en-us/library/bb490995.aspx 启动服务从命令行启动你的工作,然后在完成后关闭服务等明天
    • 所以你对一些 CodePlex 项目感兴趣,但对 MSMQ 不感兴趣??出于某种原因,很多人都被 MSMQ 吓倒了。 . .你会惊讶于它是多么简单/容易实现。
    【解决方案3】:

    【讨论】:

    • 这看起来很有希望,并且符合我的要求。谢谢库拉姆
    • 跛脚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2015-08-21
    • 2011-05-06
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多