У меня есть Dotnet Applicaton, которая выполняет набор вставки, обновления, удаления заявления в transactionaly образомПредоставляет ли Sql неявный откат, если мой тайм-аут отката?
Код как этот
try
{
mytrans = mycon.begintransaction();
//execute sql statements
mytrans.commit();
}
catch(Exception)
{
mytrans.rollback();
}
Проблема в том, что иногда мы столкнулись исключения тайм-аута в откате и I что размер базы данных (файл mdf) увеличился !!! Значит, Sql не будет делать неявный откат? если да, то как я могу оправиться от этой ошибки и перейти в исходное состояние ???
Значит, транзакция, которая не совершена, будет неявным откатом, не так ли? если это так Какова цель метода отката –
Да, транзакция, которая не была совершена, неявно откатывается при закрытии соединения БД (возможно, таймаутом). Точка метода отката - это дать вашей программе контроль над этим, так как могут быть ситуации, когда откат вызван не техническими проблемами, а программной логикой, то есть программа запускает транзакцию, делает некоторые вещи, а затем решает откат транзакции и сделать что-то другое вместо того, чтобы использовать тот же DB connectionc. –
Хорошо, но моя логика говорит, что сначала я переношу текущие таблицы в свои табличные таблицы, а затем выполняю некоторую обработку во время этого переключения. Я столкнулся с нарушением первичного ключа, поэтому программы пытались выполнить откат и исключение тайм-аута, после чего я обнаружил, что существуют избыточные значения в конкретная историческая таблица !!! это означает, что sql не удалось откат (я так думаю) –