Я использую различные процедуры SQL в приложении.Первые процедуры вставляют несколько строк, затем некоторую обработку в коде C #, а затем 2-я процедура выполняет некоторое обновление, затем снова некоторая обработка кода, затем третья процедура удаляет некоторую запись и затем вставляет новую запись.Когда все выполнено на сервере 1, данные извлекаются с этого сервера и отправляются на сервер 2, где запись удаляется, и добавляется новая запись.Если есть ошибка на любом этапе на любом сервере в любой процедуре, я хочу откатить всю запись.Я не могу использовать начало транс, потому что обработка занимает много времени и не может заблокировать таблицу, так как другие пользователи также используют те же таблицы параллельно.Поэтому, пожалуйста, скажите мне, как я могу достичь этого, не блокируя таблицу для других пользователей.
Заранее спасибо.
Отредактировано (добавлен пример кода): я пытался определить объем транзакции, но получаю исключение, покаоткрытие соединения.Я настроил MS DTC, но, возможно, настроен неправильно.
" Доступ к сети для диспетчера распределенных транзакций (MSDTC) отключен. Пожалуйста, включите DTC для доступа к сети в конфигурации безопасности для MSDTC с использованием служб компонентовИнструмент администрирования . "
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
{
try
{
dl.SetBookReadyToLive(13570, false);
//SetBookReadyToLive
dl.AddTestSubmiitedTitleID(23402);
dl.AddBookAuthorAtLIve(13570, 1);
ts.Complete();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
public void SetBookReadyToLive (длинный BookID, состояние bool) {try {if (dbConMeta.State! = ConnectionState.Open) dbConMeta.Open ();
SqlCommand cmd = new SqlCommand("spSetBookReadyToLive", dbConMeta);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
cmd.Parameters.Add("@BookID", BookID);
cmd.Parameters.Add("@status", status);
cmd.ExecuteNonQuery();
if (dbConMeta.State == ConnectionState.Open)
dbConMeta.Close();
}
catch
{
if (dbConMeta.State == ConnectionState.Open)
dbConMeta.Close();
}
}
Я получаю исключение при открытии соединения метода>
Я использую SQL Server 2000, я установил конфигурацию MS DTC на компьютере, на котором установлен SQL Server, а также на моем ПК.откуда я запускаю кодНо все же исключение.
Пожалуйста, помогите мне настроить его