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

dir*_*0lf 4 sql performance ssis

我有一个数据流,其中包含一个OLEDB源(通过变量生成的语句),它调用存储过程.在SSMS中,它需要8分钟,但包装本身需要3倍的时间才能完成.我已将验证(DelayValidation)设置为true,因此它仍然在运行时执行.我还在数据流组件以及连接管理器中设置了元数据的验证.数据流也有ReadUncommitted.我不知道还有什么地方可以看,任何关于如何让这次跑得更快的帮助都会很棒.

Der*_*ell 12

我怀疑真正的问题在于你的存储过程,但我已经包含了一些基本的SSIS项目以尝试解决你的问题:

  • 确保OLE DB源的连接管理器都设置为DelaValidation(= True).
  • 确保ValidateExternalMetadata设置为false
  • DefaultBufferMaxRows和DefaultBufferSize对应于表的行大小
  • DROP和重新创建目标组件是SSIS
  • 确保您的存储过程已启用SET ANSI_NULLS
  • 确保sproc中的SQL命中索引
  • 添加查询提示OPTION(FAST 10000) - 此提示表示它将选择一个优化前10,000行的查询 - 默认的SSIS缓冲区大小

  • 检查存储过程SQL Server 参数嗅探.

缓慢的方式:

create procedure GetOrderForCustomers(@CustID varchar(20))
as
begin
  select * from orders
  where customerid = @CustID
end
Run Code Online (Sandbox Code Playgroud)

快捷方式:

create procedure GetOrderForCustomersWithoutPS(@CustID varchar(20))
as
begin
  declare @LocCustID varchar(20)
  set @LocCustID = @CustID

  select * from orders
  where customerid = @LocCustID
end
Run Code Online (Sandbox Code Playgroud)