SSIS 预评估阶段需要很长时间



我有一个数据流,其中包含一个调用存储过程的OLEDB源(通过变量生成的语句(。在 SSMS 中,需要 8 分钟,但包本身需要 3 倍的时间才能完成。我已将验证(延迟验证(设置为 true,因此它仍然在运行时执行此操作。Ive 还在数据流组件以及连接管理器中设置元数据的验证。数据流上也有 ReadUncommit 功能。我不确定还能在哪里看,任何关于如何使它运行得更快的帮助都会很棒。

我怀疑真正的问题出在您的存储过程中,但我也包含了一些基本的 SSIS 项来尝试解决您的问题:

  • 确保 OLE DB 源的连接管理器全部设置为延迟验证 ( = True(。
  • 确保将 ValidateExternalMetadata 设置为 false
  • DefaultBufferMaxRows 和 DefaultBufferSize 对应于表的行大小
  • 删除并重新创建目标组件是 SSIS
  • 确保存储过程已设置为ANSI_NULLS
  • 确保 sproc 中的 SQL 命中索引
  • 添加查询提示选项 (FAST 10000( - 此提示意味着它将选择一个查询,该查询将针对前 10,000 行(默认 SSIS 缓冲区大小(进行优化

  • 查看存储过程 SQL Server 参数探查。

慢速方式:

create procedure GetOrderForCustomers(@CustID varchar(20))
as
begin
  select * from orders
  where customerid = @CustID
end

快速方法:

create procedure GetOrderForCustomersWithoutPS(@CustID varchar(20))
as
begin
  declare @LocCustID varchar(20)
  set @LocCustID = @CustID
  select * from orders
  where customerid = @LocCustID
end

相关内容

最新更新