代码之家  ›  专栏  ›  技术社区  ›  Daniel A. White

MS SQL超时开启ASP.NET页面,但不在SSMS中

  •  4
  • Daniel A. White  · 技术社区  · 14 年前

    当存储过程在我们的ASP.NET页,它在SQL Server上超时 Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. . 当我在SSMS中执行相同的存储过程时,它会相对较快地返回。SQL Server和IIS位于同一个框中。我在这两个地方都是以同一个用户的身份登录的。其他页面都很好。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Community Doug McClean    7 年前

    可能是参数嗅探。

    My answer here 提供一些查询,您可以使用这些查询来检索两个执行计划(SSMS-one和ASP.NET一)比较和对比。

    编辑

    实际上,这可能是一个更有用的查询。

    Use YourDatabase;
    
    SELECT *
    FROM sys.dm_exec_cached_plans 
    CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
    CROSS APPLY sys.dm_exec_query_plan(plan_handle) 
    cross APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
    where sys.dm_exec_sql_text.OBJECTID=object_id('YourProcName') 
             and attribute='set_options'
    
        2
  •  1
  •   Damien_The_Unbeliever    14 年前

    2) 但可能是查询超时,因为有其他东西阻止它运行。在等待asp.net第页,是否可以在SQL Server上运行sp_who2,并检查Blk列-如果有一个条目的值与同一行中的SPID不同,则会发生某些阻塞。

        3
  •  -1
  •   Chris Van Opstal    14 年前

    CommandTimeout 属性并查看是否解决了问题:

    SqlCommand myCommand = new SqlCommand();
    myCommand.CommandTimeout = 150;
    myCommand.CommandType = CommandType.Text;