我有一个归档过程,基本上会在一定天数后删除归档记录。编写预定的SQL作业或Windows服务来完成删除是否更好?数据库是mssql2005。
要谈到下面的一些答案,这个问题是关于内部应用而不是分布式产品。
答案 0 :(得分:8)
这取决于你想要完成什么。 您想将删除的档案存储在某个地方吗?记录更改? SQL作业应该更好地执行,因为它直接在数据库中运行,但是更容易为数据库外部的资源提供服务访问。所以这取决于你想做什么,,,
答案 1 :(得分:7)
我认为预定的SQL作业将是一个更安全的解决方案,因为如果将数据库迁移到新计算机,执行迁移的人可能会忘记涉及到Windows服务而忘记在新服务器上启动/安装它
答案 2 :(得分:5)
过去我们已经运行了很多SQL作业。然而,最近,我们一直在将这些流程从.Net代码调用为从Windows计划任务运行的客户端应用程序,原因有两个:
答案 3 :(得分:2)
请注意,无论您如何操作,对于此任务,您都不需要服务。服务全天运行,并且会整天消耗服务器的一些内存。
在此,您需要运行一项任务,并且每天运行一次。因此,您要么在SQL Server中找到一份工作,要么在Joel中描述了一个按计划设置的应用程序(控制台或winforms),然后从服务器的内存空间卸载。
答案 4 :(得分:1)
这是针对您/内部的,还是您分发的产品的一部分。
如果在内部,我会说SQL工作。那也只是另一项服务。
如果它是您分发的产品的一部分,我会考虑安装和支持的方式。
答案 5 :(得分:0)
关注Corey的观点,如果这是外部分发的,您是否需要支持SQL Express?如果没有,我会直接使用SQL作业。否则,您将不得不变得更有创意,因为SQL Express没有SQL 2005的完整版本(以及MSDE)附带的SQL代理。如果没有SQL Agent,您将需要另一种方法来自动触发作业。它可以是Windows服务,计划任务(调用.NET应用程序,PowerShell脚本,VBscript等),或者您可以尝试直接在SQL Server中实现某些触发器。