2011-06-16 80 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