具有SQL Server目标的TempDB中的SSIS大容量插入排序

具有SQL Server目标的TempDB中的SSIS大容量插入排序,ssis,sql-server-2012,Ssis,Sql Server 2012,我有一个使用SQL Server数据工具创建的SSIS包,该包部署到SQL Server 2012实例,该实例通过使用SQL Server目标对象将大量数据从一个数据库移动到同一服务器上的另一个数据库 我使用的是一个OLEDB源对象和一个SQL查询,该查询按照我的临时表的聚集索引的顺序进行排序。我在高级编辑器中标记了源对象,表示数据已排序,并将列的SortKeyPosition设置为1。我相信这应该避免影响TempDB,但我仍然看到在执行期间TempDB上有很多活动。包是当前服务器上唯一运行的东

我有一个使用SQL Server数据工具创建的SSIS包,该包部署到SQL Server 2012实例,该实例通过使用SQL Server目标对象将大量数据从一个数据库移动到同一服务器上的另一个数据库

我使用的是一个OLEDB源对象和一个SQL查询,该查询按照我的临时表的聚集索引的顺序进行排序。我在高级编辑器中标记了源对象,表示数据已排序,并将列的SortKeyPosition设置为1。我相信这应该避免影响TempDB,但我仍然看到在执行期间TempDB上有很多活动。包是当前服务器上唯一运行的东西

下面是包执行的过程。如果在OLE DB目标中运行完全相同的包交换,则数据将直接进入.mdf文件,而在TempDB上没有任何活动。该包使用SQL Server目标运行约30分钟,使用OLE DB目标运行约20分钟。我只想使用OLEDB目的地,但它偶尔会抛出这样的网络错误:“TDS流中的协议错误”

我已经阅读了很多关于这个问题的白皮书和文章,它们似乎都描述了我正在使用的过程,并且都建议在OLEDB对象上使用SQL目标对象以提高性能。(例:和)

步骤1)截断暂存表

步骤2)禁用临时表上的所有非聚集索引

步骤3)从暂存表中删除主键约束

步骤4)将数据复制到临时表

步骤5)启用临时表上的所有非聚集索引

步骤6)将主键添加回暂存表


SQL目标对象中是否有我丢失的设置或其他可能导致此活动的内容?提前感谢您提供的任何建议。

您的信息已过时-为了灵活性和速度,现在首选OLE DB目的地,请参考:


您的结果似乎证实了这一点。

是的,我们已确保更新网络驱动程序并关闭TCP烟囱功能。我们还尝试了添加不同的NIC,但没有成功。这可能是一个愚蠢的问题,但您是否尝试过使用选定的NIC?我还没有尝试ADO.NET目标。我将尝试设置,明天测试,并公布结果。