安排任务与服务

本文关键字:服务 任务 | 更新日期: 2023-09-27 18:27:06

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

安排任务与服务

我过去总是为定时任务制作Windows服务。但几年前,我毫不后悔地转向了"任务调度器"方法。

以下是我从使用任务调度器方法中发现的优势:

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

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

  3. 更容易启动特别执行(如果你想在某个时候立即检查结果,而不是等到下一次定时执行)

附言:为了将来参考,这类问题应该在程序员堆栈交换中仔细考虑,因为这是关于的设计选择,而不是现有代码的问题

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

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

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

操作系统是否使用Windows?如果是,我会编写一个脚本文件来同步数据库,并将该脚本放入任务调度器。

对于ubuntu来说,预定任务将是我的选择。。。