powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Прерывание транзакции
15 сообщений из 15, страница 1 из 1
Прерывание транзакции
    #32001037
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация.
Началась транзакция Т1 При её работе используется множество таблиц М1
Позже начинается транзакция Т2 использует и подмножество данных из М - М2
Транзакция Т2 комитится

Транзакция Т2 прерывается , т.е. не рольбакится а, к примеру, снимается процесс, рвется связь и проч

Что происходит с данными М2?
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001042
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А причем тут T1 вместе с M1? И что такое просто M?
И как T2 может прерываться если она уже закоммичена?
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001043
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При снятии процесса всегда делается роллбак.
Если "рвется связь и проч" - должен сниматься процесс (встречались случаи, когда не снимается - из-за ошибок в настройках сети).
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001055
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините за ошибку в описании ситуации.
В действительности фраза
"Транзакция Т2 прерывается , т.е. не рольбакится а, к примеру, снимается процесс, рвется связь и проч"
должна звучать как
Транзакция Т1 прерывается , т.е. не рольбакится а, к примеру, снимается процесс, рвется связь и проч
т.е. - прерывается именно Т1

что касается ролбака при прерывании - опыт показал, что это не так.
На клиенте выскочил таймаут, но транзакция продолжает висеть. При снятии её (например, через Enterprise Manager), отката не происходит.
Происходит возврат в первоначальное состояние данных множества М1

С описанными последствиями
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001057
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цитирую предыдущее сообщение:
"На клиенте выскочил таймаут, но транзакция продолжает висеть. При снятии её (например, через Enterprise Manager), отката не происходит.
Происходит возврат в первоначальное состояние данных множества М1"

Но что же такое откат транзакции? Я всегда думал, что если произошёл "возврат в первоначальное состоение данных множества M1" (с которыми транзакция T1 работала), то следовательно это и есть откат транзакции.
А вообще всё зависит от того, какая из двух транзакций первой успеет заблокировать строки этих таблиц M. Ведь каждая команда UPDATE (DELETE) накладывает исключительную блокировку на строку (если используется индекс) или на 8 К страницу данных (если индекс не используется).
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001068
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To AnatolyS
"что касается ролбака при прерывании - опыт показал, что это не так. На клиенте выскочил таймаут, но транзакция продолжает висеть. При снятии её (например, через Enterprise Manager), отката не происходит."
Описанная ситуация совершенно фантастическая. Никогда, ни на каких версиях MSSQL не видел и не слышал о ТАКОМ. Можете прислать скрипт, который иллюстрирует ЭТО?
Может-быть, Вы не полностью описали ситуацию? Эти 2 транзакции, конечно, выполняются в разных коннектах?
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001154
wlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бред какой-то!!! Что происходит, не происходит???!!! Может тебе надо сначало понять что такое транзакция?
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001179
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Э, уважаемый, эмоциональность высказываний поубавь пожалуйста.
Я говорю про конкретную ситуацию, возникшую при
эксплуатации промышленной БД, не про теоретизирование
по поводу и без.
Уточняя - вопрос касается случая "оторванных" соединений в системе с
большим количеством транзакций, "затрагивающих" большое кол-во таблиц.
Как известно, сервер периодически проверяет
(используя механизмы протокола, в данном случае TCP/IP),
живое еще соединение или нет. В последнем случае происходит
описанная ситуация.
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001183
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Вас не затруднит, подскажите с помощью чего (ф-ции DBLIB, DBNETLIB(DBMSSOCN))
"сервер периодически проверяет (используя механизмы протокола, в данном случае TCP/IP),живое еще соединение или нет."
или, хотя бы ссылки ...
Заранее благодарен.
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001190
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не проверял на 7.0 и 2000, но Enterprise Manager 6.5 прежде чем выполнить любой запрос посылает сначала команду select "Test Connection".

"...сервер периодически проверяет(используя механизмы протокола, в данном случае TCP/IP), живое еще соединение или нет..." - что-то меня терзают смутные сомнения.
Стал бы он слать такие тупые запросы, если бы были "механизьмы"?
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001197
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения за несколько некорректное описание
механизма обработки "осиротевших" (официальный термин) сессий.
В действительности всё достаточно полно описано в
разделе Orphaned Sessions sql серверных Books Online.
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001199
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое полезное, что написано в Books Online на тему Orphaned Sessions это:

To close an orphaned SQL Server session, use the KILL command поскольку Windows NT only performs a check every one or two hours.
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001200
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно, мне и интересно знать, что происходит с
Orphaned Sessions в части транзакций при уничтожении
процесса.
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001214
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что касается Orphaned Sessions, то за 5 лет работы с с-мой, в которой большое кол-во пользователей работают на плохих линиях, эффектов с "половинчатыми" транзакциями не наблюдал. При этом никаких попыток сервера "проверить" соединение не наблюдалось, соответственно, он "рвался" или руками или по таймауту со стороны клиента. Трудно предположить, что подобные механизмы существуют в зависимости от используемой сетевой библиотеки, т.к. Named Pipes (p.e. над TCP/IP) не "умеют" (по определению) инициировать операцию со стороны сервера (выполняющего только Listen On).
...
Рейтинг: 0 / 0
Прерывание транзакции
    #32001285
skif
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да происходит, уважаемый. Например, у нас происходит. Аэропорт Внуково. В сети все протоколы, куча серверов. И вот иногда (вырастает в частенько) мы по два часа и ждем, так как кроме Kill выхода нет, и сам M$ говорит, что лучше им не пользоваться. А иногда эта пара часов длится до перезагрузки сервера....

Посему мне тоже интересно, в чем грабли. Причем иногда бываю сбои в транзакциях из одного оператора (то есть при вызове серверной процедуры). И сама процедура из одного оператора Insert. В процессе трассировки смотрится, что он после Insert ищет @@Identity и на нем виснет, так вот...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Прерывание транзакции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]