SQL作业无法打开cmd

时间:2019-02-07 15:29:59

标签: c# ssis sql-server-2016 sql-server-agent

我有一个SSIS软件包,其中包含一个脚本任务,该任务通过cmd promt执行程序。

当我从集成服务目录中执行程序包时,该任务运行良好,但是当我将其作为sql服务器代理作业的一部分运行时,该作业报告成功,但它没有执行任何操作。

如果任务根本不执行,几乎是一个错误,因为当我通过ssis目录运行程序包时,我会看到一个cmd弹出窗口,其中记录了正在发生的事情,就像我通过作业运行它时一样,不能弹出此cmd。

我正在起诉sql server 2016,该作业使用代理用户帐户运行。

1 个答案:

答案 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

可能还会重复