Я получил следующую ошибку один раз в своем приложении.
Это SQLTransaction завершено; он больше не используется
След стека приведен ниже: он говорит о Zombie Check
и Rollback
.
Какая ошибка в коде?
Примечание. Эта ошибка появилась только один раз.
UPDATE
От MSDN - метод SqlTransaction.Rollback
Откат генерирует исключение InvalidOperationException, если соединение завершено или транзакция уже откатна на сервере.
От Проверка Zombie на транзакции - Ошибка
Одна из самых частых причин, по которым я обнаружил эту ошибку в различных приложениях, - это совместное использование SqlConnection в нашем приложении.
CODE
public int SaveUserLogOnInfo(int empID)
{
int? sessionID = null;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlTransaction transaction = null;
try
{
transaction = connection.BeginTransaction();
sessionID = GetSessionIDForAssociate(connection, empID, transaction);
//Other Code
//Commit
transaction.Commit();
}
catch
{
//Rollback
if (transaction != null)
{
transaction.Rollback();
transaction.Dispose();
transaction = null;
}
//Throw exception
throw;
}
finally
{
if (transaction != null)
{
transaction.Dispose();
}
}
}
return Convert.ToInt32(sessionID,CultureInfo.InvariantCulture);
}
Трассировка стека
ССЫЛКА:
- Что такое транзакция зомби?
- Проверка Zombie на транзакции - ошибка
- Завершена обработка SqlTransaction
- http://forums.asp.net/t/1579684.aspx/1
- "Это завершение этого SqlTransaction; он больше не используется." ... ошибка конфигурации?
- dotnet.sys-con.com - Открыт пул соединений SqlClient
- Отмена нити оставляет транзакции зомби и сломанный SqlConnection