我有一个 .NET 4 控制台应用程序,它在运行时使用 ERPConnect 使用 R3Connection 向 SAP 发出数据请求,并在将转换后的数据加载到同一个 SQL Server 数据库之前从 SQL Server 数据库中获取一些映射数据。
我被要求按照每日计划进行此运行。
有没有人有关于如何做到这一点的建议?
我最初的想法是:一个 .bat 文件和 Windows 任务计划程序或 Windows Powershell
有没有人有任何建议或理由让您选择其中一个?
我有一个 .NET 4 控制台应用程序,它在运行时使用 ERPConnect 使用 R3Connection 向 SAP 发出数据请求,并在将转换后的数据加载到同一个 SQL Server 数据库之前从 SQL Server 数据库中获取一些映射数据。
我被要求按照每日计划进行此运行。
有没有人有关于如何做到这一点的建议?
我最初的想法是:一个 .bat 文件和 Windows 任务计划程序或 Windows Powershell
有没有人有任何建议或理由让您选择其中一个?
我只会使用Windows Task Scheduler并安排任务。这是一种简单、易于重新配置的方法,并且可以配置为直接运行您的控制台应用程序(无需批处理文件)。
这里的好处是您可以随时更改时间表,例如一天中的时间或频率,只需配置系统的时间表即可。
我建议使用 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 服务,它会命中一个表,并且在该表中是一个程序集和类名列表,我想根据间隔和下一次运行 dateTime 启动这些程序集和类名. 使用反射我调用程序集中的类,我需要根据 nextrun 日期时间与当前日期时间相比运行。此外,每个类都将接受一个 nameValueCollection,因此我可以为每个类创建 XML 列,以便即时将配置设置传递给每个类。我所要做的就是更新该列并在下次运行时设置新设置,而无需停止或重新启动服务。当然,您可以让您的控制台应用程序在每次运行时都拉入一个配置文件并执行基本相同的操作(如果您使用 Windows 计划任务管理器,我强烈建议您这样做)。如果 PRD 出现故障,您需要快速将应用程序指向 QAS 或开发系统,或者维护用户名和密码(如果您要这样做,我会加密),这很好。如果您需要业务分析师对该特定任务进行一些控制,那么拥有该数据驱动的后端也可以让您构建前端。这听起来像是很多工作,但实际上并非如此。或维护用户名和密码(如果您要这样做,我会加密)。如果您需要业务分析师对该特定任务进行一些控制,那么拥有该数据驱动的后端也可以让您构建前端。这听起来像是很多工作,但实际上并非如此。或维护用户名和密码(如果您要这样做,我会加密)。如果您需要业务分析师对该特定任务进行一些控制,那么拥有该数据驱动的后端也可以让您构建前端。这听起来像是很多工作,但实际上并非如此。
另请注意:我确信您可能不会在 XP 上进行设置,但如果您记住,我已经多次看到 WTS 加密服务(不确定加密服务是否 100% 正确,但它与这些线路类似。)被损坏并且计划的任务失败并且可能是一团糟。我们在机器上运行 RFC,以便 SAP 获取文件和计划任务,以确保它们正在运行,有时这些事情会失败,RFC 不会重新启动并导致各种问题。