2011-06-16 81 views
0

我一直有SQL程序超时的麻烦,我已经缩小到这个函数,我可以传递参数和它的话,但在这种情况下,我发送了一对夫妇的人。当它运行时,我得到一个超时,可能有6个左右进入数据库,然后在2分钟左右发生超时。当在本地运行时,一切正常,并在几秒钟内完成操作。有任何想法吗? 。SQl错误,超时

我知道它获取它需要的信息并进入列表,它可以连接并发送数据到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(); 
    } 
} 
+0

只是为了澄清我得到一个HttpException(0x80004005):请求超时。]错误。 – user685590 2011-06-16 14:47:06

+0

你在循环内调用ConnectToSQL吗? – stuartmclark 2011-06-16 14:48:41

回答

1

尝试通过您的打开连接。打开一个sql连接非常昂贵。

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(); 

} 
+0

是的,我发现我正在使用ConnectToSQL,像stuarmclark说的,在一个while循环中,所以这样做非常昂贵。相反,我收集的输出和使用一个连接通过列表。很傻,很明显。感谢所有的帮助 – user685590 2011-06-16 14:58:13

+0

为什么在本地运行时它的工作速度如此之快?我运行的机器和SQL服务器在不同的机器上,而当我部署时,它们驻留在同一台机器上!只是很高兴知道。谢谢 。 – user685590 2011-06-16 15:00:16

+0

Sql限制数据库连接的数量。在您的部署环境中,它可能无法打开新的连接,直到某个其他进程关闭其连接。如果您在该数据库上运行sp_who2,则会看到所有打开的连接。如果你看到超过60个,你的sql连接管理可能会有问题。 – Phil 2011-06-16 15:10:11