«Эта SqlTransaction завершена; его больше нельзя использовать ».… ошибка конфигурации?

Я работаю над этим около полутора дней и искал множество блогов и справочных статей в Интернете . Я нашел несколько вопросов по SO, связанных с этой ошибкой, но я не думал, что они вполне применимы к моей ситуации (или в некоторых случаях, к сожалению, я не мог их понять достаточно хорошо, чтобы реализовать: P). Я не уверен, что могу описать это достаточно хорошо, чтобы получить помощь ... но вот что:

У нас есть приложение .NET для отслеживания наших ресурсов. Есть функция экспорта для копирования ресурса в систему учета рабочего времени и биллинговую систему; это обращается к хранимой процедуре, которая связана с базами данных времени и биллинга.

Недавно я переместил базу данных биллинговой системы на новый сервер (исходный сервер: Server 2003 SP2, SQL 2005; новый сервер: Server 2008 R2, SQL 2008 R2) . У меня есть связанный сервер, который указывает на базы данных 2008 года. Я обновил хранимую процедуру, чтобы указать на сервер 2008 года, а затем получил сообщение об ошибке MSDTC и RPC (http://www.safnet.com/writing/tech/archives/2007/06/server_myserver.html). Я включил «rpc / rpc out» на связанном сервере и установил MSDTC для разрешения доступа к сети (примерно так: http://www.sqlwebpedia.com/content/msdtc-troubleshooting ).

Теперь, когда я пытаюсь запустить функцию экспорта, я получаю указанное выше: «Эта операция SqlTransaction завершена; ее больше нельзя использовать». Мне кажется странным, что когда я просто запускаю хранимую процедуру (из SSMS), она сообщает, что она успешно завершается.

Кто-нибудь видел это раньше? Я что-то упустил в конфигурации? Я продолжаю просматривать одни и те же страницы, и единственное, что я обнаружил, это то, что я не перезагружался после внесения изменений MSDTC (упоминается здесь: http://social.msdn.microsoft.com/forums/en- США / adodotnetdataproviders / thread / 7172223f-acbe-4472-8cdf-feec80fd2e64 / ).

Я могу опубликовать часть или всю хранимую процедуру, если это поможет ... пожалуйста, дайте мне знать.

46
задан White Island 15 June 2011 в 14:05
поделиться

2 ответа

Я считаю, что это сообщение об ошибке связано с «транзакцией зомби».

Найдите возможные области, где трансактон совершается дважды (или откатывается дважды, или откатывается и фиксируется и т. Д.). Код .Net фиксирует транзакцию после того, как SP уже зафиксировал ее? Код .Net откатывает его при обнаружении ошибки, а затем пытается откатить его снова в предложении catch (или, наконец,)?

Возможно, на старом сервере никогда не возникало условие ошибки, и таким образом, ошибочный код «двойного отката» никогда не срабатывал. Возможно, теперь у вас есть ситуация, когда есть какая-то ошибка конфигурации на новом сервере, и теперь неисправный код получает удар при обработке исключений.

Можете ли вы отладить код ошибки? Есть ли у вас трассировка стека?

42
ответ дан 26 November 2019 в 20:38
поделиться

У меня та же проблема. Эта ошибка возникает из-за пула соединений. Когда в системе работают два или более пользователей, пул соединений повторно использует соединение и переход. Если первый пользователь выполнит коммит или откат, транзакция не будет использоваться долго.

4
ответ дан 26 November 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: