powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка статуса именованной транзакции
25 сообщений из 26, страница 1 из 2
Проверка статуса именованной транзакции
    #38661169
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем! Предположим, есть процедура, в которой присутствуют именованные транзакции. Какие - то из них не закрываются. Проверять @@trancount не вариант. Можно ли как ни будь проверить статус именованной транзакции?

Транзакцию создаю так:

Код: sql
1.
BEGIN TRANSACTION maintran
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661180
begin tran maintran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
begin tran maintran

select *
from sys.dm_tran_active_transactions at
inner join sys.dm_tran_session_transactions st on at.transaction_id = st.transaction_id
where
at.name = 'maintran'
and st.session_id = @@spid

rollback
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661209
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот с радостью бы, но версия сервера 2000...
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661226
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBCC OPENTRAN
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661243
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
begin tran MyTransaction;
select 1 as a into dbo.t;
dbcc opentran;
rollback;
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661371
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А селектом? нельзя вывести?
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661386
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enakenenaken, нутк INSERT..EXEC и из нее выбираете
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661439
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПроверять @@trancount не вариант.
На основании...?
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661496
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shakill,

При чём тут exec? Как селектом?
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661497
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

На основании того, что есть ещё вложенные транзакции.
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661498
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enakenenakenShakill,

При чём тут exec? Как селектом? WITH TABLERESULTS
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661502
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enakenenakenНа основании того, что есть ещё вложенные транзакции.
Нет в mssql вложенных транзакций
Есть вложенные команды begin transaction.
Вложенаня команда commit не завершает вложенные begin transaction.
А rollback отменяет транзакцию до внешней команды begin transaction или точки сохранения.
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661503
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю всех! Скажите, а строка select 1 as a into dbo.t;
что делает?
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661505
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
begin tran MyTransaction1;
select 1 as a into dbo.t;
dbcc opentran;
	begin tran MyTransaction2;
	dbcc opentran;
	select 1 as a into dbo.t2;
	commit
rollback;
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661506
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enakenenaken,
приводит к ошибке
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661510
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxxenakenenaken,
приводит к ошибке
плина думал одно написал другое
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661513
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того
dbcc opentran
Displays information about the oldest active transaction and the oldest distributed and nondistributed replicated transactions
и не факт, что ваша именованная транзакция будет самой старшей
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661519
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enakenenakenВладислав Колосов,

На основании того, что есть ещё вложенные транзакции.

Это неверное представление. Имя транзакции вообще не имеет никакого значения, оно для программиста, а не для сервера. Вашу проблему, созданную кривым кодом, можно решить "костылём" в виде цикла выполнения COMMIT до тех пор, пока @@trancount>0 при том, что транзакция commitable. Либо делать ROLLBACK при @@trancount>0, т.к. в коде, скорее всего, произошла ошибка и он не дошел до COMMIT.
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661522
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так указание имени в конструкции rollback tran name даст возможность прикончить именно транзакцию name, если есть другие?
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661526
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enakenenakenТак указание имени в конструкции rollback tran name даст возможность прикончить именно транзакцию name, если есть другие?
Вы хелп читали ли ?

transaction_name
Is the name assigned to the transaction on BEGIN TRANSACTION. transaction_name must conform to the rules for identifiers, but only the first 32 characters of the transaction name are used. When nesting transactions, transaction_name must be the name from the outermost BEGIN TRANSACTION statement .
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661528
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня каждая транзакция называется по разному.
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661530
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661539
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enakenenakenТак указание имени в конструкции rollback tran name даст возможность прикончить именно транзакцию name, если есть другие?
Не так, это заблужение :) Откатить можно только до точек сохранения, если таковые были. Имена ничего не значат - они нужны, чтобы программист не запутался в транзакциях.
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661544
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ах, да! Еще возможны операции восстановления резервных копий по именованным транзакциям.
...
Рейтинг: 0 / 0
Проверка статуса именованной транзакции
    #38661545
Фотография enakenenaken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жесть, тогда вложенные транзакции не являются выходом. А можно прервать транзакцию?
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка статуса именованной транзакции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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