2013-01-18 94 views
2

我有一個事務與多個插入。所有的插入物都很好,除了一個。 我驗證了參數,拼寫,所有它,似乎我沒有搞清楚。 它給我的錯誤:多插入事務連接超時 - ADO.NET - SQL Server

Timeout expired. The timeout period elapsed prior to completion of the operation 
or the server is not responding. 

我的交易看起來是這樣的:

SqlConnection db = new SqlConnection(connString); 
DataSet dataSet = new DataSet(); 
SqlDataAdapter da = new SqlDataAdapter(); 
using (db) 
{ 
    db.Open(); 
    SqlTransaction trans = db.BeginTransaction(); 
    try 
    { 
     //insert into COMMSignalDefinition !!Problem HERE 
     da.InsertCommand = 
      new SqlCommand("INSERT INTO COMMSignalDefinition(Name) " 
          + "VALUES (@name)", db, trans); 

     da.InsertCommand.Parameters.Add("@name", SqlDbType.NVarChar); 
     foreach (DataRow row in ds.Tables["COMMTerminalSignal"].Select()) 
     { 
      da.InsertCommand.Parameters[0].Value = row.ItemArray[1]; 
      da.InsertCommand.ExecuteNonQuery(); 
     } 

     // insert into COMMSignalExceptionDefinition -- names 
     da.InsertCommand = 
      new SqlCommand("INSERT INTO COMMSignalExceptionDefinition(Name) " 
          + "VALUES (@name)", db, trans); 
     da.InsertCommand.Parameters.Add("@name", SqlDbType.NVarChar); 
     foreach (DataRow row in ds.Tables["COMMSignalExceptionDef"].Select()) 
     { 
      da.InsertCommand.Parameters[0].Value = row.ItemArray[1]; 
      da.InsertCommand.ExecuteNonQuery(); 
     } 

     trans.Commit(); 
     MessageBox.Show("You have successfully imported your Settings. " 
         + "You can now exit the program.", 
         "Success", 
         MessageBoxButtons.OK, 
         MessageBoxIcon.Information); 
    } 
    catch (Exception e) 
    { 
     trans.Rollback(); 
     MessageBox.Show(e.Message, 
         "Error", 
         MessageBoxButtons.OK, 
         MessageBoxIcon.Error); 
    } 
} 

我有多個插件,它做工精細(我刪除了他們的其餘部分)和我搬到了一個有問題的開始。 我的問題是我可能做錯了什麼? 我甚至驗證瞭如果「有問題」的查詢被髮送到服務器,與SQL Server Profiler,它!如果我在SQL Server Management studio執行它,它也可以。

Connection Timeout設置爲30

能否請您給我一些線索? SQL Server版本是2005! 謝謝!

+0

什麼記錄表「COMMTerminalSignal」和「COMMSignalExceptionDef」中的數字?在SQL Server Management Studio中運行需要多長時間? – Jacco

+0

COMMTerminalSignal有2條記錄,COMMSignalExceptionDef(插入的作品在這一個),有1個記錄 – darkdante

+0

@Jacco它運行瞬間 – darkdante

回答

3

請刪除這個帖子。我對我感到很慚愧......經過幾個小時的挖掘之後,我在Management Studio中做了一些測試,在那裏我測試了一些交易而沒有提交它們。所以它正在等待一個提交,並且我一直在做,或者試圖插入......!對我感到羞恥!爲此事道歉。

+1

我只會重寫自己的答案,所以它的笑臉數量較少,並將其標記爲「答案」,我想我們已經不止一次地去過那裏了! – Jacco

0

Connection Timeout is set to 1

SqlConnection.ConnectionTimeout Property

The time (in seconds) to wait for a connection to open. The default value is 15 seconds.

讓你有timout設置爲1秒。這是否回答你的問題?

Remarks: You can set the amount of time a connection waits to time out by using the ConnectTimeout or Connection Timeout keywords in the connection string. A value of 0 indicates no limit, and should be avoided in a ConnectionString because an attempt to connect waits indefinitely.

+0

謝謝你的答案,@Tim Schmelter,但我已經嘗試了默認的Conn Time,即使是0,結果也是一樣:(問題是當我調試代碼時,它凍結在那條線上,直到異常被抓...... – darkdante