定期运行C#应用程序以更新数据库

定期运行C#应用程序以更新数据库,c#,sql,database,triggers,C#,Sql,Database,Triggers,我想知道是否可以定期运行C#控制台或ASP.NET应用程序 我的目的是每月自动执行一次以下步骤: 1) 查询源数据库 2) 获取(1)处的查询结果,并使用LINQ和C#操作它们,例如检查目标数据库中是否已经存在某个值 3) 将派生数据存储在目标数据库中 应用程序必须在Windows Server 2008上运行,源数据库位于SQL 2005 Server中,目标数据库位于SQL 2008 Server中 例如,我试图创建一个SSIS包,但由于无法添加任何逻辑,因此它无法完成任务 有人有什么建议吗

我想知道是否可以定期运行C#控制台或ASP.NET应用程序

我的目的是每月自动执行一次以下步骤:

1) 查询源数据库

2) 获取(1)处的查询结果,并使用LINQC#操作它们,例如检查目标数据库中是否已经存在某个值

3) 将派生数据存储在目标数据库中

应用程序必须在Windows Server 2008上运行,源数据库位于SQL 2005 Server中,目标数据库位于SQL 2008 Server

例如,我试图创建一个SSIS包,但由于无法添加任何逻辑,因此它无法完成任务


有人有什么建议吗?

您应该创建一个计划任务来执行此操作。请看这里:控制面板->管理工具->任务计划程序

正如你所说的,是的-强烈建议使用控制台应用程序


编辑


我同意@andynormancx的观点,SSIS可能是更好的方法;但是,通常可以创建由计划任务执行的控制台应用程序。这取决于您的资源、时间和专业知识:可能值得,也可能不值得花足够的精力了解SSI,以便在SqlServer中创建一个包来完成您需要的工作。如果有人使用SSIS来完成这项任务并给出完整的答案,我肯定会向这种专业知识低头

当然可以。但我建议将其设置为Windows服务。

您可以创建一个计划任务,以预定义的时间间隔调用您的.exe


转到您的控制面板,选择Scheduled Task,然后添加Scheduled Task

如果您真的想在C中执行此操作,我建议您编写一个服务,您的代码几乎与普通控制台应用程序相同

检查以下链接以开始。

您可以创建新的计划任务。这将更容易,而且您不必重新发明轮子。

这可以在SSIS中完成。您有编写脚本的脚本任务。为什么需要使用C#?您是否可以将此逻辑封装在一个或多个存储过程中,并使用SQL Agent对其进行调度?或者,您也可以创建一个命令行dotnet应用程序,并通过调度任务或SQL Server Agent对其进行调度。您可以将逻辑添加到SSI中。这就是SSIS的用途。你为什么推荐Windows服务?@IAbstract-我建议它也是Windows服务,因为它将在后台运行,因此用户不必担心每月运行代码。将它设置为按时间运行,不用担心。为什么不把它写成一个服务呢?使用一个计划好的任务要比使用一个专门的服务一个月运行一次任务要好得多。虽然现在编写Windows服务要容易得多,但通过调度程序运行任务仍然不那么麻烦。@Jethro:“这样用户就不必担心每月运行代码了”。。。这就是计划任务的用途。+1-我想补充一点,您应该将其设置为控制台应用程序。如果逻辑简单,您还可以创建一个存储过程,并将其作为sql中的作业执行。但任务调度器将是最重要的best@IAbstract:谢谢你的回答。逻辑很简单:我通过查询(quantity和customer)从源数据库中获取两列,然后从目标数据库中检查客户是否存在,如果是这种情况,我将向现有表中添加一行customerID、quantity和current month。您的解决方案可行吗?@francesco这听起来像是一个相当直接的插入..插入..选择查询,它实际上涉及任何逻辑(除了可能生成某种月数列值)恐怕我对SSI的细节不是很了解,其他人必须详细回答。但是,是的,如果工作真的归结为运行查询,那么有比编写自己的控制台应用更好的方法来完成。windows服务对于这样的事情来说太过了。