调度任务与服务

时间:2014-10-19 12:32:04

标签: c# windows service

我有本地和远程dbs。出于某种原因,我希望将本地与远程同步,比如每5分钟一次。我应该使用使用计时器进行同步的服务还是在Windows服务器上安排任务?

3 个答案:

答案 0 :(得分:2)

我以前总是为定时任务制作Windows服务。但几年前,我转而采用任务调度程序方法,并没有后悔。

以下是我使用Task Scheduler方法所获得的优势:

  1. 编写较少的代码(主要是因为您没有Timer的开销)

  2. 更容易调试(只需按F5并运行它,因为它是正常的EXE)

  3. 更容易启动临时执行(如果您想立即检查结果,而不是等到下一次定时执行)

  4. P.S。为了将来参考,我们应该在Programmers Stack Exchange中提出这类问题,因为它涉及设计选择,而不是现有代码的问题< / em>的

答案 1 :(得分:1)

如果您使用的是MS SQL Server且本地(源)服务器至少具有Standart Edition或更高版本,则应考虑使用复制(SQL Server Express不能用作发布服务器或分发服务器)。如果本地服务器具有Express版本但远程服务器为Standart Edition或更高版本,则应在远程端设置PULL订阅以从Express服务器提取数据。

如果复制不是这种情况,那么我将使用计时器提供使用服务(使用SYSTEM帐户运行),因为您需要指定将使用哪个Windows帐户来运行计划任务的任务。当帐户的密码发生变化时,您的任务将无法执行,更糟糕的是,您将无法获得有关该任务的任何信息。

如果您的频率很长(每周一次或每天一次),那么使用服务应该被视为浪费系统资源,但我认为可以接受5分钟。

答案 2 :(得分:0)

您是否在操作系统中使用Windows?如果是,我会写一个脚本文件来同步数据库,并将脚本放到任务计划程序。

对于ubuntu,预定任务将是我的选择......