SSIS程序包的代理作业慢与手动DTexec执行

问题描述

我在一台计算机(sql Server 2017,Windows Server 2016)上有一个SSIS程序包,该程序具有用户配置的表名变量,并将3-4个表从sql Server数据库导出到平面文件中,然后将其压缩成本质上是做select * from view(这里讨论的视图是没有连接的简单select * from table)。

该程序包保存在sql Server的一个磁盘驱动器上,并且该文件夹是共享的。正如我所解释的,数据流只是将表导出到W:驱动器。

这是我的观察结果

  1. sql Server作业设置为调用程序包(通过文件系统选项)时,源查询将DB锤击得足够好,但目标始终无法跟上,从而导致Async_Network_IO等待。性能监控器告诉我,它永远无法以超过8-10 MB /秒的速度写入目标。

  2. 具有相同选项的相同软件包(仅从sql Server Agent命令行中选择)是通过打开命令提示符并调用DTexec实用程序手动运行的,目标始终提供25-30 MB / s的吞吐量。

尽管这台计算机上安装了sql Server 2008、2014和2017版本,但我进行了大量的研究,有问题的sql Server是2017年,而sql Server代理或手动DTexec版本-都调用了最新的DTexec。实用程序(可从任务管理器中的文件位置找到)。

此软件包非常旧,我已使用VS 2017对其进行了升级,并将目标版本命名为sql Server 2017,还验证了软件包格式版本为8,表明该软件包的版本很好。

到目前为止,由于这是通过视图进行的表导出(视图定义不过是select * from table),因此我没有研究统计信息,因此无论如何都必须进行聚集索引扫描。

我不确定从哪里开始查找,因为这看起来不像是存储问题,因为手动执行看起来不错,sql Server代理在任何地方都具有管理权限。

请向我建议为什么在上述两种情况下行为会有所不同。这让我几个星期以来一直感到好奇,因此一直在寻求建议。

问候 Chandan Jha

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)