使用SQL Server 2005。執行交易中的一個SP
每次接收到新數據時,都會存儲它,然後調用一個SP,然後使用此數據計算某些統計數據。存儲數據和調用SP是在單個事務中執行的。該SP在交易徵狀
using (var transaction = session.BeginTransaction())
{
// ... executing insert/update statements ...
var command = new SqlCommand("StoredProcedureName", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@name", value));
transaction.Enlist(command);
command.ExecuteNonQuery();
transaction.Commit();
}
當運行SQL事件探查器,我可以看到所有的插入/更新語句只調用transaction.Commit();
方法後,表示有,但SP的呼叫呼叫command.ExecuteNonQuery();
方法之後立即顯示。因此,在SQL事件探查器中插入/更新語句之前會顯示SP調用。它讓我認爲SP在任何邏輯錯誤的插入/更新語句之前實際執行。
問題是爲什麼SP調用在調用command.ExecuteNonQuery();
方法後顯示在SQL Profiler中,而不是transaction.Commit();
之一?這是否意味着它在執行插入/更新語句後立即執行而不是執行?
什麼是會話和事務是什麼類型? – 2011-06-03 10:26:19
NHibernate.ISession和通常的顯式SQL事務 – 2011-06-03 11:08:12