Applies ToSQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Express

Симптомы

При использовании транзакций XA, драйвер JDBC Microsoft SQL Server и Microsoft SQL Server в качестве серверной базы данных вы может изолированы незавершенных транзакций в SQL Server Если диспетчер транзакций обнаруживает сбой или проблемы с подключением.Кроме того возможно возникновение следующих распространенных проблем:

  • Ожидающих транзакций в течение длительного времени на экземпляре SQL Server. Они могут иметь значение null или -2 идентификатора сеанса в базе данных.

  • Операции заблокированы в течение длительного времени транзакцией, которая имеет идентификатор сеанса -2 . В этом случае время ожидания блокировки и потоки для закрепления.

Причина

Если между SQL Server и диспетчер транзакций теряется сетевое подключение для неподготовленных транзакции, то драйвер JDBC для SQL Server не обеспечивает очистки этих операций, и они могут продолжать использовать ресурсы и не дает другим транзакциям. Из-за реализации XA драйвера JDBC для SQL Server SQL Server не удается обнаружить непредвиденного отключения диспетчеров транзакций. Таким образом для SQL Server, эти транзакции остаются в системе до тайм-аут транзакции XA или перезапуска базы данных. Тайм-аут использует бесконечности на экземпляре SQL Server, а не настраивается в базе данных.

Временное решение

Чтобы устранить эту проблему, используйте один из следующих методов:

  • Перезапустите сервер базы данных при возникновении сбоев любой виртуальной машины Java (JVM) или подключения к сети в силу своей эти потерянные транзакции.

  • По отдельности остановите потерянные транзакции в базе данных, чтобы очистить свои ресурсы. Чтобы убедиться, что транзакция считается потерянной, убедитесь в том, что он не в состоянии под сомнением (Подготовка) или тот, который в настоящее время завершения транзакции. Все транзакции, которые последнего до перезапуска связанного JVM и успешное восстановление цикла следует потерянными.

  • Задайте значение времени ожидания транзакций XA, длина которого превышает длинной операции принудительной остановки сразу же превышает значение времени ожидания. Это можно сделать, вызвав метод XAResource.setTransactionTimeout() .

  • Для многих руководителей независимых транзакций объект XAResource не доступно для непосредственно вызывающего кода и диспетчер транзакций не устанавливает значение тайм-аута транзакции. В этом случае можно использовать внешнее приложение присвоено новое значение по умолчанию времени ожидания транзакции. Это новое значение по умолчанию будет использоваться все транзакции, которые не задан тайм-аут транзакции.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.