Здравствуйте, Shmj, Вы писали:
S>Но возникла проблема: случилось раз, что оборвалось подключение в транзакции. Приложение завершило работу, а вот открытая транзакция так и осталась висеть. Данные не доступны для чтения. Сайт "завис".
S>Что в таких случаях предлагает делать микрософт? Вручную выберать из незавершенные транзакции и закрывать?
Если отрубается коннекшн — транзакция в SQL рвётся. Если Connection Resiliency не включен, по крайней мере.
Можно поиграться с его параметрами. Первая попавшаяся (не факт, что лучшая) ссылка:
http://msdn.microsoft.com/en-us/data/dn456835.aspx
Есть небольшой проект, примерно 1 заказ в секунду в пике. Нагрузка не большая, по этому было решено применить EF для работы с данными.
Но возникла проблема: случилось раз, что оборвалось подключение в транзакции. Приложение завершило работу, а вот открытая транзакция так и осталась висеть. Данные не доступны для чтения. Сайт "завис".
Что в таких случаях предлагает делать микрософт? Вручную выберать из незавершенные транзакции и закрывать?
Думаю, в Microsoft такие вещи мониторит специально выделенный DBA.
А для всех остальных рекомендации стандартные:
1. Делать транзакции покороче (особенно те, что изменяют данные).
2. Для особо тяжелых случаев вынести управление транзакциями в хранимку.
3. Перейти на shapshot, чтобы разнести чтение и запись.