2

需要建议,请参见下面的场景

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

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

如何进行轮询然后触发该 ETL 包 - 服务代理会有所帮助

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

问候

4

3 回答 3

1

您有 2 个选项:

  1. 设置一个文件夹监视程序,它应该从命令行调用包,例如 MyTrigger从 CNET 下载它
  2. 正如您所说,您希望 SQL 代理执行它,另一个可能更有效的选项是设置一个文件表并在表上创建一个触发器以进行插入,它应该使用sp_start_job系统存储过程执行代理作业。
于 2013-03-07T15:25:29.453 回答
0

SSIS 文件观察任务呢?

于 2015-04-23T11:01:57.037 回答
0

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

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

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

于 2016-05-13T12:57:32.170 回答