有没有一种很好的方法来为ASP.NET站点创建定期导入?

时间:2009-02-24 21:19:06

标签: asp.net sql-server iis scheduled-tasks recurring

我正在处理的网站是运行Windows Server 2003和SQL Server 8(2000?)以及ASP.NET 3.5。

我需要运行某种脚本或应用程序来将数据从FTP文本文件导入数据库。机器上已经有一个运行的站点,它使用当前的数据库。我可以使用计划任务可靠地启动某种将导入数据的.aspx页面吗?或者有更好的方法吗?

如何确保没有其他人可以访问运行导入的页面?我不希望随机用户运行导入!

提前致谢!

P.S。在插入数据之前需要对数据进行一些处理。即查找,条件等,因此数据库工具不够健壮(我认为)。我讨厌DTS,我觉得这个版本没有SSIS。

6 个答案:

答案 0 :(得分:4)

如果你想让一个C#App处理你的导入,我会建议一个没有表单的Windows应用程序(exe)(比控制台应用程序更好,因为它运行时不会弹出任何UI)。让它按计划任务每​​隔一段时间(每分钟)运行一次。

答案 1 :(得分:2)

为什么要使用ASP.NET?根据作业的复杂程度,如果需要更复杂的处理,您可以将其直接加载到数据库(BULK LOAD)或使用DTS(SQL Server 2000)或SSIS(SQL Server 2005/2008)。

答案 2 :(得分:1)

运行BULK INSERT或bcp来导入数据,请参阅此处http://msdn.microsoft.com/en-us/library/aa173839(SQL.80).aspx

答案 3 :(得分:1)

我会在这里回应其他人 - 您不希望计划任务点击网页。 SQL Server提供了一些很好的数据导入选项,或者您可以编写一个简单的Windows程序并将其作为计划任务运行。

另一种选择是编写一个监视FTP目录并进行导入的Windows服务。

答案 4 :(得分:1)

作业中的DTS和存储过程。

作业中的BCP和存储过程。

你说你需要做很多查找和转换吗? SQL很擅长 - 并且擅长快速完成。起初看起来有点令人生畏,但并不难。

答案 5 :(得分:0)

正如其他人所说,可能是一个单独的控制台应用程序(由计划任务触发)或Windows服务将是这种情况的最佳选择。

另一方面,如果您已经在服务器上运行的Web应用程序中具有所有必需的功能,那么您可以设置一个计划任务,该任务启动脚本(VBscript,JScript),然后调用网页应用的一页。

要获得某种安全性(例如,阻止任何用户可以调用该页面),您可以向页面添加一些代码,以检查是否使用http://localhost调用了该页面。这至少会阻止从远程客户端调用页面。