代码之家  ›  专栏  ›  技术社区  ›  Aaron Palmer

Windows服务还是SQL作业?

  •  9
  • Aaron Palmer  · 技术社区  · 16 年前

    我有一个归档过程,它基本上在一组天数后删除归档的记录。写一个预定的SQL作业或一个Windows服务来完成删除是否更好?数据库为MSSQL2005。

    更新:

    为了回答下面的一些问题,这个问题是关于内部应用程序而不是分布式产品的。

    6 回复  |  直到 11 年前
        1
  •  8
  •   Rune Grimstad    16 年前

    这取决于你想完成什么。 是否要将已删除的存档存储在某个位置?记录更改?SQL作业应该执行得更好,因为它直接在数据库中运行,但是向数据库外部的资源提供服务访问更容易。所以这取决于你想做什么,

        2
  •  7
  •   Jimoc    16 年前

    我认为计划的SQL作业是一个更安全的解决方案,因为如果将数据库迁移到新的计算机上,执行迁移的人可能会忘记涉及到Windows服务,而忘记在新服务器上启动/安装它。

        3
  •  5
  •   Joel Coehoorn    16 年前

    在过去,我们已经运行了许多SQL作业。但是,最近我们开始从.NET代码调用这些进程,将其作为从Windows计划任务运行的客户端应用程序,原因有两个:

    1. 这样更容易实现日志记录等功能。
    2. 我们有其他批处理作业不在数据库中运行,因此必须在Windows计划的任务中运行。这样,所有类型的批处理作业都将在一个位置列出。
        4
  •  2
  •   Stephen Wrighton    16 年前

    请注意,无论您如何操作,对于此任务,您都不需要服务。服务整天都在运行,并且将整天消耗服务器的一点RAM。

    在这里,您有一个任务需要运行,并且每天运行一次。因此,您要么想要一个SQL Server中的作业,要么像Joel描述的那样,需要一个应用程序(控制台或WinForms),该应用程序是按计划设置的,可以执行,然后从服务器的内存空间中卸载。

        5
  •  1
  •   Corey Trager    16 年前

    这是给您的/内部的,还是您分发的产品的一部分。

    如果在内部,我会说SQL作业。这也是另一项服务。

    如果它是您分发的产品的一部分,我将考虑如何安装和支持。

        6
  •  0
  •   Mike L    16 年前

    为了贯彻科里的观点,如果这是外部分发的,您是否需要支持SQL Express?如果没有,我将直接使用SQL作业。否则,您将不得不获得更多的创造性,因为SQL Express没有随SQL 2005完整版本(以及MSDE)一起提供的SQL代理。如果没有SQL代理,您将需要另一种方法来自动启动作业。它可以是Windows服务、计划任务(调用.NET应用程序、PowerShell脚本、vbscript等),也可以尝试直接在SQL Server中实现某些触发器。

    推荐文章