微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。