我的公司是一家直邮公司,随着我们通过SSIS,SQL和Excel的自动化不断发展,我们正在寻找改善工作流程的方法。
基本上,我们要做的就是能够使不在办公室的流程自动运行。即,一个文件进来了,并且根据文件放置的位置,过程将开始,而我们需要完成的任务将开始。
我们知道我们想要它做些什么,我们只是在努力从哪里开始,或者更具体地说,什么是使我们的服务自动化的最佳方法是什么?
您有两种通用方法:事件驱动过程或轮询过程。前者在事件发生时运行(文件降落在文件夹中),而后者在定期运行(每隔5分钟看一次文件是否存在)运行。
根据我的经验,事件驱动模型在实践中听起来确实不错,但在实现中却令人恐惧。我们使用了各种现成的软件和本地的“文件监视程序”任务来处理数据。不可避免地会发生 某些 事情,并且没有注册该事件,因此没有数据被处理。解决方法通常很简单,请重新启动该过程,然后再移回文件。除非我们在一个受监管的环境中工作,在该环境中我们无权移动文件,因此将需要另一个人来重置队列,而不是谁来移动文件。
轮询过程要容易得多。如果有工作要做,那就去做。否则,它会重新进入睡眠状态。Windows Task Scheduler可以做到这一点。SQL Server有自己的作业调度系统,称为SQL Agent。它也可以在不同的时间间隔运行软件包。
让SSIS在无限循环中运行以检查文件或使用WMI事件来尝试捕获放置的文件可能很诱人,但两者都不做。SSIS并非设计为一直运行。取而代之的是,使用经过验证的产品来处理它们的原意。