SSIS:在SQL Server代理作业运行期间使Excel在脚本任务中可见

Sch*_*mms -2 excel jobs ssis visible script-task

我在SSIS中构建了一个包,它使用脚本任务在Excel中打开Excel文件,格式化和刷新一些数据.我希望在脚本任务运行时看到Excel,以查看Excel是否一直挂起.这可能吗?我正在转换一个通过shell脚本调用Excel的进程,而不是使用SSIS来调用Excel.我想第二个问题是,这是个坏主意吗?

bil*_*nkc 9

为什么这是一个坏主意

一般而言,管理员的任务是最大化服务器上​​的服务器或服务的"正常运行时间".安装在机器上的软件越多,服务中断和修补中断的几率就越大.为了能够在您描述的机制中操作Excel,您将强制在该计算机上安装MS Office.这将花费您一个软件许可证,并且所需的修补程序将会破坏这些管理员可能需要遵守的任何SLA.

内存泄漏.除了整个修补位,至少在过去,有一些问题,以编程方式操作Excel,它基本上归结为它很容易结束内存泄漏(我要让你理解.分配内存但从未放弃,永远不要让分配的内存下降).随着时间的推移,复合效果是运行此程序包将导致可用的系统内存越来越少,并且回收它的唯一方法是通过重新启动,然后返回到SLA.

您想要查看Excel正在执行的操作的原因是您可以监视执行,因为它"挂起并且一直发生".这听起来不像一个稳定的过程.同样,没有管理员希望在服务器上运行不稳定的进程.在事件的循环中有些事情是不对的.无论是打开Excel的代码,运行它的宏等等,还是存在错误,这就是你需要检查进程的原因.这类似于在霰弹枪伤口上放置一个绑带.停止拍摄自己,你不会需要绷带.

您尝试执行的任务是"打开Excel文件,格式化并在Excel中刷新一些数据"SSIS可以将数据本机地推送到Excel中.如果您预先格式化文件,请开发SSIS以写入格式化文件并将其复制掉,这应该可行.它不优雅,但它的工作原理.有更好的方法提供格式化数据但不知道您的基础架构,我不知道SSRS,SharePoint,Excel Services,Power Pivot等是否可行.

为什么你将无法看到Excel

一般来说,运行SQL Agent的帐户可能会相当强大.为了防止像粉碎攻击这样的事情,来自Windows 2008+服务的功能受到限制.要使服务帐户能够与桌面交互,您必须将其移动到应用程序的用户层,如果您或您的DBA /管理员存在风险不​​利,这可能不是一件好事.

有关更多信息,请享受以下链接

也就是说,如果所有的星星都是对齐的并且您接受了允许服务与桌面交互的风险,答案就像Sam指出的那样.在未示出的代码中,您需要将该Visible属性设置为true.

当你离开并允许与桌面进行交互时,有人在包中部署一些"测试"代码并将其部署到生产中,MessageBox.Show("Click OK to continue");并注意如果没有人注意到这个对话框就在那里,你将有一份工作等待完成很长时间.