SSIS - 轮询文件文件夹和触发器ETL包

时间:2013-03-07 14:21:03

标签: sql-server-2008 ssis

需要建议,见下文方案

我们开发了1个ETL包,可以一次处理5个文件(通常需要1分钟)。我们预计在早上时间内有近100多个文件可以进入PROCESSING文件夹(意思是在早上6点到早上7点之间)。

我正在努力设计/开发某种轮询机制,这种机制一直在寻找文件,如果它们到达,它将触发ETL包(通过SQL Server代理作业触发)。

如何进行轮询,然后触发该ETL包 - Service Broker将提供帮助

我是SSIS的新手所以需要建议。需要在SQL Server中找到解决方案而不是开发.net应用程序来轮询文件夹然后触发作业

此致

3 个答案:

答案 0 :(得分:0)

您有两个选择:

  1. 设置一个文件夹观察程序,该文件夹观察程序应该从MyTrigger download it from CNET等推荐行调用包。
  2. 正如你所说,你希望SQL Agent执行它,另一个可能更有效的选择是设置一个文件表并在表上创建一个insert用于插入的触发器,该触发器应该用{{执行代理作业3}}系统存储过程。

答案 1 :(得分:0)

答案 2 :(得分:0)

我所做的是设置代理程序以按计划启动SSIS包。我在SSIS中做的第一件事是确定是否有要处理的文件。出于各种原因,我更喜欢有一个小脚本任务。如果存在文件,我设置一个变量,以便脚本任务后面的约束可以转到下一个任务,或者如果没有文件,则结束包报告成功。

如果您没有任何辅助需求,例如日志记录,那么您可以为每个文件枚举器使用a,如果没有找到文件,它将成功结束包。

ps如果您将计划设置为一分钟并且程序包运行时间较长(导入多个文件),则在原始流程完成之前,下一个计划将不会触发。因此,您不必担心多个进程互相干扰。