在C#代码后面检测慢速运行的SQL查询

时间:2014-10-31 16:16:14

标签: c# asp.net sql-server

背景

我有一个应用程序只执行以下任务:

  1. 从用户那里获取输入
  2. 运行SQL存储过程,将用户输入作为参数传递
  3. 做点什么
  4. 但是,由于我无法控制的其他预定作业,存储过程中使用的某些表会被锁定。

    我拥有什么

    所以,我基本上有这样的代码,以便用户被重定向到"服务器忙碌"页:

    Dictionary<int, string> result = new Dictionary<int, string>();
    try
    {
        result = new myRepository().GetUserInfo(userInput);
    }
    catch(Exception ex)
    {  
        // in the error page, tell users to try again in a few minutes because the server is busy 
        Response.Redirect("ServerIsBusy.aspx");
    }
    

    我想做什么

    使用我当前的代码,显示&#34;服务器忙碌需要一段时间&#34;消息,所以我试图找到是否有办法检测存储过程(GetUserInfo(userInput))是否尽快运行缓慢,以便我可以将用户重定向到&#34;服务器正在忙碌&# 34;页。

    我尝试了什么

    我尝试将httpRunTime executionTimeout设置为几秒钟,但正如许多网站所解释的那样,当设置数量很小时,此设置不能正常工作,而当我将其设置为5秒时,它需要大约20秒。

    我可以使用任何配置或技巧来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

如果您可以使用Ajax,我会向您的网络服务器发出asynchrone(带有jQuery)请求,并在您的网站上显示一个buzy图标/标签/消息。

像这样:

function doSomeThing() {
    $.ajax({
        type: "GET",
        url: url,
        async: true
    });
}

使用数据库时,请确保设置正确的索引,通常可以提高速度。但是一定要设置正确的指数,多数也可能是错误。