1
即時通訊使用asp.net企業庫插入和更新數據到sql數據庫。asp.net企業庫,所有正在使用的連接(關閉)
C#代碼:
Database db = DatabaseFactory.CreateDatabase();
IDbConnection connection = db.GetConnection();
connection.Open();
IDbTransaction transaction = connection.BeginTransaction();
DBCommandWrapper command;
try
{
//insert part
command = db.GetStoredProcCommandWrapper("stored_procedure1");
command.CommandTimeout = 900;
command.AddInParameter("@parameter1", DbType.Int32, 3);
db.ExecuteNonQuery(command, transaction);
//update part
command = db.GetStoredProcCommandWrapper("stored_procedure2");
command.CommandTimeout = 900;
command.AddInParameter("@param1", DbType.Int32, 5);
db.ExecuteNonQuery(command, transaction);
transaction.Commit();
}
catch (SqlException e)
{
transaction.Rollback();
throw (new ApplicationException("sql error", e));
}
catch (Exception e)
{
transaction.Rollback();
throw (new ApplicationException("error", e));
}
finally
{
connection.Close();
}
代碼上的方法。 該方法執行很多次,有時會出現以下錯誤: 「Timeout expired。超時時間在從池中獲取連接之前已過去,可能是因爲所有池連接都在使用中並且已達到最大池大小。
我的問題是:是否可以將插入和更新部分放在一起,因爲它在上面?
將插入和更新部分放在一起導致此錯誤?
謝謝。
執行另一臺機器上的應用程序時,我得到的錯誤鏈接的第二段。 如何在本地重現錯誤? 我在Visual Studio 2008上有應用程序解決方案和即時調試。 我的意思是,限制池大小將幫助我在本地獲取錯誤? – pyram 2013-02-21 14:46:03
爲了嘗試並重現錯誤消息,您可以在應用程序上創建一個負載測試,以模擬多個用戶點擊該網站。應用程序日誌中是否有任何錯誤消息。檢查那些。 – Victor 2013-02-21 17:38:19
沒有多個用戶。那不是這種情況。在出現錯誤的機器上,只有一個用戶正在使用該應用程序。用戶點擊表單上的一個按鈕,每次點擊該按鈕時,它都會「調用」包含上述代碼的方法。用戶不斷點擊按鈕,直到出現錯誤。所以,它就像是從池中取出所有連接,直到沒有任何東西離開...........現在我無法訪問應用程序日誌,因爲我沒有訪問機器。 – pyram 2013-02-21 19:57:23