[英]Slow in SSRS but fast in SSMS
我有一个在SSMS中运行很快但在SSRS中运行非常慢的查询,当我在寻找解决方案时,我想到了以下由user275554提供的解决方案
“感谢这里提供的建议。我们找到了一个解决方案,它的确与参数有关。由于'参数嗅探',SQL Server从SSRS报告执行时正在生成复杂的执行计划。解决方法是:在存储过程中声明变量,并将传入的参数分配给变量。然后查询使用变量而不是参数。这导致查询执行一致,无论是从SQL Server Manager还是通过SSRS报告调用。”
我的问题是我尝试为变量分配参数,但似乎我真的不知道该怎么做,因此报告没有产生任何数据。
我尝试过的一个例子是:
CREATE PROC MissingData
AS
DECLARE @Office varchar (200)
DECLARE @employee varchar (100)
SET @Office = @Office -- @office is the parameter from SSRS
SET @employee = @employee-- @employee is the parameter FROM SSRS
有人可以帮助我如何分配参数以使用解决方案提供的变量。
谢谢米
有关参数嗅探,性能问题和解决方案的详细说明,请参见本文 。
由于这是一个报告程序,因此我想最容易解决的方法是在CREATE PROC
语句中添加WITH RECOMPILE
,这意味着SQL Server每次运行时都会重新编译proc,因此将根据您用来调用它的参数,而不是您以前使用它的参数。
这是将参数传递到存储过程然后创建局部变量以防止参数嗅探的正确格式。 如前所述,您还可以添加WITH RECOMPILE
CREATE PROC MissingData
@Office varchar(200)
,@employee varchar(100)
WITH RECOMPILE
AS
DECLARE @ramOffice varchar (200)
DECLARE @ramEmployee varchar (100)
SET @ramOffice = @Office -- @office is the parameter from SSRS
SET @ramemployee = @employee-- @employee is the parameter FROM SSRS
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.