我有一个存档过程,基本上在一定天数后删除存档的logging。 编写一个预定的SQL作业或者一个windows服务来完成删除操作会更好吗? 数据库是mssql2005。
要谈到下面的一些答案,这个问题是关于内部应用程序,而不是分布式产品。
这取决于你想完成什么。 你想存储删除的档案在什么地方? 记录更改? 由于SQL作业直接在数据库中运行,因此应该执行得更好,但更容易将服务访问权限授予数据库之外的资源。 所以这取决于你想要做什么,,,
我认为一个预定的SQL工作将是一个更安全的解决方案,因为如果数据库迁移到一台新的机器上,那么进行迁移的人可能会忘记有一个Windows服务,并忘记在新的服务器上启动/安装它。
在过去,我们已经运行了一些SQL作业。 然而,最近,我们已经开始从.net代码调用这些进程作为从Windows时间表任务运行的客户端应用程序,原因有两个:
请注意,不管你如何做,这个任务你不需要服务。 服务整天运行,并会整天消耗服务器的内存。
在这里,你需要运行一项任务,每天运行一次。 因此,您可能需要在SQL server中执行任务,或者Joel描述了按计划安装的应用程序(控制台或winforms),然后从服务器的内存空间中执行卸载。
这是给你/在家里,还是你发行的产品的一部分。
如果在家里,我会说SQL的工作。 这只是另一项服务。
如果它是你分发的产品的一部分,我会考虑如何安装和支持。
关于Corey的观点,如果这是外部分布式的,你需要支持SQL Express吗? 如果没有,我会直接与SQL作业。 否则,由于SQL Express不具有完整版本的SQL 2005(以及MSDE)附带的SQL代理,因此您必须获得更多的创造性。 没有SQL代理,你需要另一种方式来自动启动这个工作。 它可能是一个Windows服务,一个计划任务(调用.NET应用程序,PowerShell脚本,VB脚本等),或者你可以尝试直接在SQL server中实现一些触发器。