C# 带超时的SQl错误

C# 带超时的SQl错误,c#,sql,timeout,C#,Sql,Timeout,我一直在SQL程序上遇到超时问题,我已经把它缩小到这个函数,我可以传递参数和它的字,但在这个例子中,我发送了几百个。当它运行时,我会得到一个超时,可能会有6个左右的时间进入数据库,然后在大约2分钟内超时。在本地运行时,一切正常,操作在几秒钟内完成。!!有什么想法吗 public void ConnectToSQl(String word, int count, String HashTag = " ") { checkExcludeList(); SqlConnection co

我一直在SQL程序上遇到超时问题,我已经把它缩小到这个函数,我可以传递参数和它的字,但在这个例子中,我发送了几百个。当它运行时,我会得到一个超时,可能会有6个左右的时间进入数据库,然后在大约2分钟内超时。在本地运行时,一切正常,操作在几秒钟内完成。!!有什么想法吗

public void ConnectToSQl(String word, int count, String HashTag = " ")
{
    checkExcludeList();
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "Data Source = dev\\SQLEXPRESS ;" +
                            "Initial Catalog=sml;" + 
                            "User id=**** ;" + 
                            "Password =******;" + 
                            "Trusted_Connection=No";
    try {
        conn.Open();
        SqlCommand Command = new SqlCommand("INSERT INTO word_list (word , count)" +
                                            "VALUES (@word , @count)", conn);
        //add parameters for insert
        Command.Parameters.AddWithValue("@word", word);
        Command.Parameters.AddWithValue("@count", count);
        Command.ExecuteNonQuery();
    } catch (Exception e) {
        Box.Text = "SQL error" + e;
    } finally {
       conn.Close();
    }
}
我知道它可以获取所需的信息并进入列表,它可以连接并向SQL发送数据。我读过可能是建立了太多的联系之类的东西,但似乎没有什么能解决它。你有什么想法或简单的问题吗?。还尝试根据禁用调试器等

public void ConnectToSQl(String word, int count, String HashTag = " ")
{
    checkExcludeList();
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "Data Source = dev\\SQLEXPRESS ;" +
                            "Initial Catalog=sml;" + 
                            "User id=**** ;" + 
                            "Password =******;" + 
                            "Trusted_Connection=No";
    try {
        conn.Open();
        SqlCommand Command = new SqlCommand("INSERT INTO word_list (word , count)" +
                                            "VALUES (@word , @count)", conn);
        //add parameters for insert
        Command.Parameters.AddWithValue("@word", word);
        Command.Parameters.AddWithValue("@count", count);
        Command.ExecuteNonQuery();
    } catch (Exception e) {
        Box.Text = "SQL error" + e;
    } finally {
       conn.Close();
    }
}

尝试传入您的开放连接。打开sql连接非常昂贵

public void ConnectToSQl(String word, int count, String HashTag = " ")
{
    checkExcludeList();
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "Data Source = dev\\SQLEXPRESS ;" +
                            "Initial Catalog=sml;" + 
                            "User id=**** ;" + 
                            "Password =******;" + 
                            "Trusted_Connection=No";
    try {
        conn.Open();
        SqlCommand Command = new SqlCommand("INSERT INTO word_list (word , count)" +
                                            "VALUES (@word , @count)", conn);
        //add parameters for insert
        Command.Parameters.AddWithValue("@word", word);
        Command.Parameters.AddWithValue("@count", count);
        Command.ExecuteNonQuery();
    } catch (Exception e) {
        Box.Text = "SQL error" + e;
    } finally {
       conn.Close();
    }
}
public void ConnectToSQl(SqlConnection conn, String word, int count, String HashTag = " ")
{   
    if (conn.State != ConnectionState.Open)
        throw new SqlExecutionException("Sqlconnection is not open");

    checkExcludeList();

    SqlCommand Command = new SqlCommand(
        "INSERT INTO word_list (word , count)" +
        "VALUES (@word , @count)", conn);

    //add parameters for insert
    Command.Parameters.AddWithValue("@word", word);
    Command.Parameters.AddWithValue("@count", count);

    Command.ExecuteNonQuery();

}

为了澄清我得到了一个HttpException(0x80004005):请求超时。]错误。你是在循环内调用ConnectToSQL吗?是的,我发现我是在while循环内使用ConnectToSQL的,就像stuarmclark说的,所以这样做非常昂贵。相反,我收集了输出,并使用一个连接遍历列表。如此愚蠢和明显。感谢所有的帮助,为什么它在本地运行时工作得这么快?。我正在运行的计算机和SQL server位于不同的计算机上,而当我部署它们时,它们位于同一台计算机上!。很高兴知道。谢谢。Sql限制了数据库连接的数量。在您的部署环境中,在其他进程关闭其连接之前,它可能无法打开新连接。如果在该数据库上运行sp_who2,您将看到所有打开的连接。如果您看到超过60个,那么您的sql连接管理可能有问题。