Используется SQL Server 2005.
Каждый раз, когда поступают новые данные, они сохраняются и после них вызывается 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 Profiler я вижу, что все операторы вставки / обновления отображаются там только после вызова метода transaction.Commit();
, но вызов SP отображается сразу после вызова command.ExecuteNonQuery();
метод.В результате вызов SP отображается перед инструкциями вставки / обновления в SQL Profiler.Это заставляет меня думать, что SP фактически выполняется перед любыми инструкциями вставки / обновления, что логически неверно.
Вопрос в том, почему вызов SP отображается в SQL Profiler после вызова метода command.ExecuteNonQuery();
, а не transaction.Commit();
один?Означает ли это, что он выполняется сразу, а не после выполнения операторов вставки / обновления?