一次执行一个存储过程需要较少,但是当作为同一存储过程的批处理执行时需要更多时间

时间:2017-03-03 19:19:06

标签: sql-server-2008

我有一个存储过程exec语句,如下所示: -

---ABC DEF-------------------------------
--- (1)Batch Run 1:38 (2) 42 Seconds (3) 41 Sec (4) 41 Sec (5) 42 Seconds
exec usp_RS_DEALIO_JLL_ECRDetails 
       @dEmpID=N'990000:22085'
       ,@Year=N'2016'
       ,@CommPeriod=N'24 - 11/15/2016 - 11/30/2016'
       ,@BusinessLine=N'3'
       ,@MarketID=N'1201 - Midwest: Chicago Downtown'
       ,@OpUnitID=N'1502 - Brokerage: Leasing - Tenant Re;990000'
       ,@Prof=N'002701'
       ,@ShowPros=N'Yes'
       ,@ShowRecon=N'No'

在SSMS中执行时,此存储过程大约运行45秒。但是,当我尝试使用不同的参数同时在不同的SSMS窗口中运行相同的存储过程时,需要更多的时间。

在这种情况下,上面的参数需要1:38秒。即使在SSMS中的不同窗口中同时触发10个exec存储过程语句,如何将其降低到45秒左右。

我在这里尝试做的是,通过调用SSRS报告服务器的控制台应用程序触发此存储过程。 SSRS服务器调用存储过程以生成报告。 SSRS报告服务器返回超时,导致PDF格式损坏。因此,即使向SSRS报告服务发出10个请求以下载二进制文件以避免超时,我也试图减少存储过程时间。

任何建议和想法都表示赞赏。

BTW - 存储过程有语句RECOMPILE,它绕过了我认为的参数嗅探问题: -

ALTER PROCEDURE [dbo].[usp_RS_DEALIO_JLL_ECRDetails]                             
--DECLARE                                                                  
  @dEmpID NVARCHAR(50)                                                                                                                                                   
 ,@Year NVARCHAR(50)                                                                                                                                                  
 ,@CommPeriod NVARCHAR(50)                     
 ,@BusinessLine nvarchar(50)                                              
 ,@MarketID NVARCHAR(MAX)                              
 ,@OpUnitID NVARCHAR(MAX)                                                                   
 ,@Prof NVARCHAR(MAX)                     
 ,@ShowPros Nvarchar(Max)                       
 ,@ShowRecon Nvarchar(Max)                     
with Recompile                                                                                                                
AS       

0 个答案:

没有答案