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

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

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

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

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

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

"...сервер периодически проверяет(используя механизмы протокола, в данном случае TCP/IP), живое еще соединение или нет..." - что-то меня терзают смутные сомнения.
Стал бы он слать такие тупые запросы, если бы были "механизьмы"?
...
Рейтинг: 0 / 0
15.12.2000, 09:47
    #32001197
AnatolyS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание транзакции
Прошу прощения за несколько некорректное описание
механизма обработки "осиротевших" (официальный термин) сессий.
В действительности всё достаточно полно описано в
разделе Orphaned Sessions sql серверных Books Online.
...
Рейтинг: 0 / 0
15.12.2000, 10:12
    #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
15.12.2000, 10:24
    #32001200
AnatolyS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание транзакции
Собственно, мне и интересно знать, что происходит с
Orphaned Sessions в части транзакций при уничтожении
процесса.
...
Рейтинг: 0 / 0
16.12.2000, 21:58
    #32001214
Fompro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание транзакции
Что касается Orphaned Sessions, то за 5 лет работы с с-мой, в которой большое кол-во пользователей работают на плохих линиях, эффектов с "половинчатыми" транзакциями не наблюдал. При этом никаких попыток сервера "проверить" соединение не наблюдалось, соответственно, он "рвался" или руками или по таймауту со стороны клиента. Трудно предположить, что подобные механизмы существуют в зависимости от используемой сетевой библиотеки, т.к. Named Pipes (p.e. над TCP/IP) не "умеют" (по определению) инициировать операцию со стороны сервера (выполняющего только Listen On).
...
Рейтинг: 0 / 0
23.12.2000, 20:08
    #32001285
skif
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание транзакции
Да происходит, уважаемый. Например, у нас происходит. Аэропорт Внуково. В сети все протоколы, куча серверов. И вот иногда (вырастает в частенько) мы по два часа и ждем, так как кроме Kill выхода нет, и сам M$ говорит, что лучше им не пользоваться. А иногда эта пара часов длится до перезагрузки сервера....

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


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