2014-10-19 132 views
0

我有本地和远程dbs。出于某种原因,我想每隔5分钟将本地和远端的同步。我应该使用一种服务来执行同步使用计时器或在Windows服务器上安排任务吗?调度任务与服务

回答

2

我以前总是为定时任务制作Windows服务。但几年前,我转而采用任务调度程序的方式,没有遗憾。

下面是我使用任务计划方法发现的优点:

  1. 更少的代码编写(主要是因为你没有一个Timer的开销)

  2. 容易调试(只需点击F5并运行它,因为这是一个正常的EXE)

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

P.S.为了将来的参考,这种类型的问题应该在Programmers Stack Exchange中真的被问到,因为它是关于设计选项,而不是现有代码的问题。

1

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

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

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

0

您是否使用Windows作为操作系统?如果是的话,我会编写一个脚本文件来同步数据库,并将脚本放到Task Scheduler中。

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