Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сделать COMMIT  [new]
Лёчиг
Member [заблокирован]

Откуда: Упал с неба
Сообщений: 3766
В Management Studio была явно открыта транзакция и под ней делался insert около 5-ти часов. Студия повисла и я не могу сделать COMMIT. Убивать процесс не хочется. Могу ли я каким-то образом под тем же пользователем приаттачиться к процессу и закомитить транзакцию?
27 май 15, 09:00    [17694093]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать COMMIT  [new]
Glory
Member

Откуда:
Сообщений: 104751
Лёчиг
и под ней делался insert около 5-ти часов.

И как выглядел этот insert

Лёчиг
Могу ли я каким-то образом под тем же пользователем приаттачиться к процессу и закомитить транзакцию?

нет
27 май 15, 09:04    [17694106]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать COMMIT  [new]
Лёчиг
Member [заблокирован]

Откуда: Упал с неба
Сообщений: 3766
Glory
Лёчиг
и под ней делался insert около 5-ти часов.

И как выглядел этот insert

Лёчиг
Могу ли я каким-то образом под тем же пользователем приаттачиться к процессу и закомитить транзакцию?

нет


Вставка 100 000 000 записей. Лень было про частям.

BEGIN TRAN
INSERT .... SELECT * FROM

-- COMMIT
-- ROLLBACK

После завершения вставки. Проверяю как встали данные. Потом выбираю либо COMMIT, либо ROLLBACK.
27 май 15, 09:11    [17694138]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать COMMIT  [new]
Glory
Member

Откуда:
Сообщений: 104751
Лёчиг
Лень было про частям.

Теперь придется по частям
27 май 15, 09:20    [17694173]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать COMMIT  [new]
Gviber
Member

Откуда:
Сообщений: 124
На самом деле в теории это возможно.

Есть ХП sp_GetBindToken которая возвращает ссылку на транзакцию

И есть ХП sp_bindsession с помощью которой можно обратится к чужой транзакции в нашей сессии.

сессия 1:
begin tran 
declare @marker varchar(300) 
exec sp_GetBindToken @marker out --получаем ссылку на тразакцию 
select @marker --ссылка


сессия 2:
begin tran --нужно т.к. маркер этой транзакции будет заменен
exec sp_bindsession '' --тут указываем ссылку
--мы в транзакции из сессии 1


Проблема в том, что sp_GetBindToken возвращает ссылку только для текущей транзакции (т.е. нужно находиться в сессии 1).

Есть ли возможность получить ссылку на удаленную транзакцию неясно. Я думаю, что есть.
28 май 15, 15:34    [17702069]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить