如何安排. net应用程序每天运行
本文关键字:每天 运行 应用程序 net 何安排 | 更新日期: 2023-09-27 18:13:52
我有一个。net 4控制台应用程序,当运行时使用ERPConnect使用R3Connection到SAP并从SQL Server数据库中获取一些映射数据,然后将转换后的数据加载到相同的SQL Server数据库中。
我被要求在每天的时间表上运行。
有谁有什么建议吗?
我最初的想法是:.bat文件和Windows任务调度程序或Windows Powershell
有没有人有任何建议或理由,为什么你会选择其中一个?
我会使用Windows任务调度程序,并安排任务。这是一种简单、容易重新配置的方法,可以配置为直接运行控制台应用程序(不需要批处理文件)。
这里的优点是,您可以更改计划,例如一天中的时间或频率在任何时候,仅仅通过配置系统的计划。
我建议使用Windows任务调度程序和批处理文件。但问题是,您真的需要批处理文件吗?我有很多应用程序是从WTS调用的,它可以直接调用应用程序。我建议修改你的控制台应用程序,这样你就可以不需要批处理文件了。
您可以从PowerShell中相当简单地设置一个计划作业:
Register-ScheduledJob -FilePath ''svr'share'foo.ps1 -Trigger @{Frequency=Daily;At="9:00PM"} -ScheduledJobOption @{WakeToRun}
这需要PowerShell v3。在幕后,它使用任务调度器。还有一个Register-ScheduledTask
cmdlet用于注册不对应于运行PowerShell脚本的任务。
是使用任务调度器UI手动设置还是使用脚本自动设置取决于这是一次设置(手动设置)还是需要在一台机器上或多台机器上重复设置任务(自动设置)
就像你正在做的那样简单,Windows任务调度程序将工作得很好。我们做过的事情,特别是因为你在处理像SAP这样的ERP系统,我做了一个windows服务,它访问一个表,在这个表中是一个程序集和类名的列表,我想根据间隔和下次运行日期时间启动它们。使用反射,我调用程序集中需要基于与当前日期时间相比的下一个日期时间运行的类。此外,每个类都将接受一个nameValueCollection,因此我可以为每个类创建XML列,以便动态地将配置设置传递给每个类。我所要做的就是更新这个列,下一次运行时新的设置就到位了,而不需要停止或重新启动服务。当然,你可以让你的控制台应用程序每次运行时都拉入一个配置文件,并做基本相同的事情(如果你使用windows计划任务管理器,我强烈建议你这样做)。当PRD下降时,你需要快速将应用指向QAS或开发系统,或维护用户名和密码(如果你要这样做,我会加密)。如果您需要业务分析师对特定任务进行一些控制,那么拥有数据驱动的后端还可以让您构建前端。这听起来像是很多工作,但实际上并不是。
另一个注意事项:我确定您可能没有在XP上设置这个,但如果您记住,我已经多次看到WTS加密服务(不确定加密服务是100%正确的,但它是沿着这些线。)被损坏,计划任务失败,可能是一团糟。我们在机器上运行RFC,让SAP获取文件和一个计划任务,以确保它们正在运行,有时这些事情会失败,RFC不会重新启动,从而导致各种问题。