存储过程停止工作并重新编译修复

时间:2018-10-15 18:57:07

标签: sql sql-server

我有一个运行良好的存储过程。许多Web表单都可以访问它,它需要20个参数。但是突然之间,它无缘无故地停止工作,然后重新编译以对其进行修复。可能是什么原因?顺便说一句,这是一个非常复杂的存储过程,它访问10个表以提取数据并应用排序。

如果我使用SQL Server运行存储过程,它将正确地返回数据而没有任何问题,但是当我使用.net应用程序执行相同的过程时,它将继续加载和加载并且最后不返回任何内容。可能是连接问题。

1 个答案:

答案 0 :(得分:0)

最简单的解决方法是从前端获取参数。然后在内部将它们重新分配给另一组变量。因为拥有这么多参数会破坏您的执行计划并导致参数嗅探。例如,脚本为:

alter proc xyz
(
    @startdate date
    , @Stopdate date
) as 
    declare @internal_Startdate as date
        , @internal_Enddate as date

    set @internal_Startdate = @StartDate; 
    set @internal_Enddate = @EndDate; 

    --..select logic here..