2011-06-30 42 views
5

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

我的目的是自动做一次以下步骤:

1)查询一个数据库。

2)在查询的结果(1)和通过使用LINQC#,例如通过检查一定的值已经存在于目标数据库操纵它们。

3)导出的数据存储在目标数据库中。

应用程序有一个Windows Server 2008的上运行时,数据库是SQL 2005服务器目标数据库是SQL 2008服务器

我试图创建一个例如SSIS包但它不会做这项工作,因为我不能添加任何逻辑。

有人有什么建议吗?

+3

这可以在SSIS中完成。您有脚本任务来编写脚本。 – vikramjb

+1

为什么你需要使用C#?你能否将这个逻辑封装在一个或多个存储过程中,并使用SQL代理来调度它们? – Yuck

+2

或者,您还可以创建命令行dotnet应用程序并通过计划任务或SQL Server代理程序进行安排。 – vikramjb

回答

10

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

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


编辑

我在SSIS @andynormancx同意可能是一个更好的方式来做到这一点;但是,通常会接受创建由计划任务执行的控制台应用程序。这就要归结为您的资源,时间和专业知识:可能或不值得花费足够的精力来学习SSIS,以便在SqlServer中创建一个包以满足您的需求。如果有人使用SSIS完成这个任务的完整答案,我肯定会鞠躬这种专业知识。

+3

+1 - 我想补充一点,你应该使这个控制台应用程序。 – Keith

+0

如果逻辑很简单,你也可以创建一个存储过程并在sql中作为一个工作执行它。但任务调度将是最好的 – fluf

+0

@Keith - 同意 – IAbstract

-1

当然,你可以做到。但我会建议将其制作为Windows服务。

+3

为什么你会推荐Windows服务? – IAbstract

+1

@IAbstract - 我会推荐它是一个Windows服务,因为这将在后台运行,所以用户不必担心每个月运行代码。将它设置为一次运行,不用担心。你为什么不把它写成服务? – Jethro

+2

使用计划任务要比每个月只执行一次任务挂起专门服务要好得多。虽然现在编写Windows服务要容易得多,但通过调度程序运行任务仍然没有多少麻烦。 – andynormancx

3

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

转到您的控制面板,选择计划任务,然后添加计划任务

-2

如果你真的想这样做,在C#中,我建议你写一个服务,你的代码几乎等同于正常的控制台应用程序。

请点击以下链接开始使用。 C# Service step by step

+1

对于像这样的东西,Windows服务是矫枉过正的。 – IAbstract

4

您可以创建一个新的计划任务。这会容易得多,你不必重新发明轮子。

相关问题