上次连接时的SQL超时

时间:2016-12-09 16:18:51

标签: c# sql-server

我有一个奇怪的问题。我有一个C#应用程序,它与SQL建立多个连接(总共7个)。一切都运行良好一段时间,然后突然间,SQL在最后一次连接上超时。这种联系非常简单

public static void APP()
{
    using (SqlConnection conn7 = new SqlConnection(ConfigurationManager.ConnectionStrings["Connect"].ConnectionString))
    {
        conn7.Open();
        SqlCommand cmd7 = new SqlCommand("sp_proc", conn7);
        cmd7.CommandType = System.Data.CommandType.StoredProcedure;
        cmd7.ExecuteNonQuery();

        conn7.Close();
    }
}

我的连接字符串看起来像这样。

add name="Connect" connectionString="Data Source=Server; Initial Catalog=DB; User ID=User; Password=password" providerName="System.Data.SqlClient"

我正在对每个人进行使用,我在每个课程结束时关闭每个连接。有没有人见过这样的事情?我有太多的联系吗?

我从Main开始按顺序运行每个班级。

2 个答案:

答案 0 :(得分:3)

如果超时,有三种可能的情况:

  • sp_proc只是花了太长时间才能跑;您需要解决代码问题
  • 存在某种锁定导致无法完成(可能是竞争的SPID上的打开事务触发了相同的数据并且采取了相互冲突的锁定)
  • 有一些不相关的服务器负载在同一时间发生,使得它运行得太慢(如果它可靠地发生,这不太可能是问题)

答案 1 :(得分:1)

我建议添加

cmd7.CommandTimeout = 6000

以秒为单位测量超时,以便为应用程序的用户设置一个可接受的超时时间,

我建议您将所有SQL连接用作标准,这样您应始终有足够的时间来获取数据。

您可能想要做的一件事是在您运行的数据库上运行trace \ sql配置文件,并检查某种类型的锁定。

如果这是超时的话,我会认为有一个进程被暂停或某种锁某种