2014-10-09 57 views
1

使用SSIS - VS 2008 的Microsoft SQL Server 2008 R2(SP2) - 10.50.4000.0(X64)SSIS fastload与目标禁用索引不起作用

我试图用一个临时表做批量更新。临时表是我的目标表的精确模式副本。我已阅读过索引可能会妨碍使用fastload选项上传到临时表的性能。所以我在数据流任务之前禁用索引,并在之后重建索引。 但是我的SSIS包在运行时验证失败。看来我无法对禁用索引的临时表快速加载。这是错误消息我recive:The query processor is unable to produce a plan because the index 'PK_StagingTable' on table or view 'StagingTable' is disabled."

如果删除其中索引被禁用命令(步骤3变成只是truncate table StagingTable)然后SSIS包的工作原理。

问题是这应该与索引禁用或只是不好的建议?指令中是否存在缺少可以使插入与禁用索引一起工作的内容?

+0

这是因为你已经在你的表上创建了一个聚集键。在引用的文章中,dbo.Stage_RowversionExport是一个非聚集索引的堆 – billinkc 2014-10-09 13:52:35

+0

@billinkc 有很好的捕获,thx!我会修改我的问题,删除不必要的绒毛,如果你想然后作为anwser发帖,我会将其标记为已接受.. – Voysinmyhead 2014-10-10 13:20:11

回答

0

要使用SSIS'快速加载选项的目标表(在本例中为临时表)可以事先禁用索引,但只有在索引是非群集时才能使用。在我的具体情况中,我制作了一个主键的模式副本,这意味着它有一个聚簇索引。我删除了登台表上的主键,并使用相同的列创建了非集群索引。