我有一个SSIS软件包,其中包含一个脚本任务,该任务通过cmd promt执行程序。
当我从集成服务目录中执行程序包时,该任务运行良好,但是当我将其作为sql服务器代理作业的一部分运行时,该作业报告成功,但它没有执行任何操作。
如果任务根本不执行,几乎是一个错误,因为当我通过ssis目录运行程序包时,我会看到一个cmd弹出窗口,其中记录了正在发生的事情,就像我通过作业运行它时一样,不能弹出此cmd。
我正在起诉sql server 2016,该作业使用代理用户帐户运行。
答案 0 :(得分:1)
@PanagiotisKanavos可能碰到了头。脚本任务有一个只读变量System::InteractiveMode
,您可以在脚本任务中检查该变量的值,以确定该进程是否可以与桌面通信,也就是“忙碌的人”。
如果您尝试通过作业与桌面进行交互,则脚本任务应引发错误。为了获得奖励积分,可以在Active Directory中将帐户标记为...拒绝桌面或类似的标记,即使您希望以某种交互方式运行工作,也无法将其标记。
在我的脚本任务中,如果我可以按照您的描述打开窗口,我总是将其包裹在一个逻辑块中,例如
string message = "Some diagnostic message";
if ((bool)this.Dts.Variables["System::InteractiveMode"].Value)
{
MessageBox.Show(message);
}
出于其他目的而运行的代码示例在我的博客中
http://billfellows.blogspot.com/2015/02/is-my-ssis-package-running-in-32-or-64.html
可能还会重复