Sql server SSIS包在服务器上运行缓慢,但在开发人员计算机上运行良好

Sql server SSIS包在服务器上运行缓慢,但在开发人员计算机上运行良好,sql-server,postgresql,ssis,odbc,sql-agent-job,Sql Server,Postgresql,Ssis,Odbc,Sql Agent Job,我有一个SSIS包,可以将数据从SQL server移动到Postgres 9.5数据库。我正在使用最新的Postgres ODBC驱动程序连接到Postgres服务器。大部分操作是插入、更新和升级。当我在VisualStudio2012中从我的开发机器(Win1064位)运行这个包时,速度非常快。它可以在大约40秒内传输大约80k行 当我将它部署到服务器(一个SQL server 2012实例)并使用SQL management studio运行它时,它的执行速度非常慢。传输不到10行的数据大

我有一个SSIS包,可以将数据从SQL server移动到Postgres 9.5数据库。我正在使用最新的Postgres ODBC驱动程序连接到Postgres服务器。大部分操作是插入、更新和升级。当我在VisualStudio2012中从我的开发机器(Win1064位)运行这个包时,速度非常快。它可以在大约40秒内传输大约80k行

当我将它部署到服务器(一个SQL server 2012实例)并使用SQL management studio运行它时,它的执行速度非常慢。传输不到10行的数据大约需要20秒,处理完整的数据集需要很长时间。我从不让它结束,因为它太长了

我的开发机器和服务器都安装了完全相同的postgres驱动程序,并且配置了相同的ODBC源

编辑:我还应该注意,我在该服务器上部署了其他运行正常的包,尽管这些包不涉及postgres或使用ODBC进行任何操作。

如果所有其他方面都相同:

  • 同样的司机
  • 相同的配置-ODBC(即ssl,勾选相同的框),包参数
  • 相同的表-表中的数据量和索引量相同
  • 相同的位精度(64x)
我将关注资源差异。即

  • IO是一样的。假设这是写入同一个数据库(和文件),那么这应该不是问题
  • 内存-ram在dev实例上受限制吗?如果数据流有大的缓冲区,这可能会减慢速度
  • CPU-开发服务器是否比您的开发机器更受限制
  • 网络-dev服务器位于不同的子网中,具有不同的QoS。我想这不是一个问题,因为其他软件包不受影响。除非连接到Postgres时有什么奇怪的事情
关注这个问题的另一种方法是运行包的不同版本,剥离部分数据流。i、 e.删除odbc/ado.net目标并运行包。如果它很快完成,你知道问题就在那里。如果仍然很慢,则继续向上游移动,直到确定了速度慢的组件


<>最后,我会考虑在ODBC上使用PSQL。psql是一个postgres实用程序,与SQL的bcp类似,它允许您将数据批量复制到postgres。odbc驱动程序只允许逐行插入,这往往是缓慢的。将数据写入以制表符分隔的文件,然后使用psql将数据大容量复制到postgres实际上要快得多(80k行可能需要5秒)

您使用的是来自本地和服务器的相同数据库吗?如果不是,可能是服务器很忙,或者服务器上的表很大,但您的开发表很小。您在本地和服务器上使用的是postgres中的同一个表吗?你能提供运行缓慢的数据流的映像吗?检查ODBC和/或驱动程序跟踪/记录。FLICKER&Mark,在开发和测试服务器上都是相同的数据库和表。泰德,你能详细说明一下吗?我在哪里可以找到这些数据以及应该查找什么?首先查看ODBC管理员a/k/a数据源控制面板的“跟踪”选项卡。确保此功能已禁用。还要查看DSN设置,确保没有启用跟踪/日志记录。