【问题标题】:Scheduled Task or Service for Routine Database Job in C#?C# 中例行数据库作业的计划任务或服务?
【发布时间】:2010-10-29 05:10:06
【问题描述】:

我有一个 Web 服务器和一个数据库服务器,我想运行一个使用现有 C# DLL 访问数据库并执行一些计算的作业。

在 C# 中创建控制台应用程序并将其安排在 Web 服务器(应用程序服务器)上以针对 DB 服务器运行是最简单的方法吗?

我认为 SSIS 是一个选项,但我不太了解,所以我认为将控制台应用程序安排为任务是最好的。

你怎么看?

【问题讨论】:

    标签: c# sql-server clr scheduled-tasks


    【解决方案1】:

    我是控制台应用程序 + 计划任务方法的忠实粉丝。它往往更清洁,更容易测试,并且如果出现问题,也更容易重新运行。也就是说,如果您可以用纯 SQL 编写计算,则可以将所有内容作为 SQL 作业运行。或者,您可以利用 SQLCLR(存在于 SQL Server 中的 .NET 程序集,基本上显示为 sproc 或 UDF),也可以完全在 SQL 作业引擎中运行。

    【讨论】:

    • 我喜欢 SQLCLR 方法,因为它使数据库机器上的所有内容都隔离...
    • 是的,但缺点是应用程序可能难以测试,而且许多 DBA 不会让你靠近他们的盒子。
    【解决方案2】:

    您可以使用 Quartz.NET 库 (quartznet.sourceforge.net) 在您的控制台应用程序中进行调度,它是开源的并且可以完美运行!

    【讨论】:

      【解决方案3】:

      是的,最简单的解决方案是创建一个单独的控制台应用程序并将其作为计划任务运行。

      您可以访问网络服务器,并且所有工具都已经到位,无需安装其他任何东西。

      【讨论】:

        【解决方案4】:

        您还可以从 PowerShell 脚本调用 C# DLL,并将该脚本作为计划任务执行。

        对于需要在后台立即采取行动的操作,我更喜欢为我的每个项目提供服务。

        【讨论】:

          【解决方案5】:

          如果工作非常小,您不需要为此编写单独的控制台应用程序。您可以单独编写一个页面并编写一个批处理文件,即相同的调度程序来调度它。您也可以通过窗口的用户界面安排它。除此之外,如果您的工作是维护计划的计划/步骤(例如重新编制索引、备份数据库、碎片整理、清理历史记录/日志等),则在“管理”下从您的 sql 服务器为其创建维护计划" 文件夹可用。

          【讨论】:

            猜你喜欢
            • 2011-02-18
            • 2016-09-29
            • 2020-06-01
            • 1970-01-01
            • 1970-01-01
            • 2016-07-01
            • 2023-01-27
            • 1970-01-01
            相关资源
            最近更新 更多