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

Откуда:
Сообщений: 313
Добрый день
Как это сделать?
17 ноя 21, 18:32    [22397156]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1909
vi0,

лучше озвучьте:
вы какую проблему пытаетесь решить?

формулировка названия топика достаточно "размыта"

Сообщение было отредактировано: 17 ноя 21, 18:36
17 ноя 21, 18:35    [22397158]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
vi0
Member

Откуда:
Сообщений: 313
felix_ff,
к примеру, хочу сделать тест, который вызовет исключение при фиксации транзакции
17 ноя 21, 18:38    [22397159]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1909
vi0,

вы можете поиграться с uncommitable состоянием транзакций с помощью set xact_aborrt + блока try/catch, но если вы хотите к примеру добиться поведения что вы:

а) выполнили некий кусок кода в одном батче
  begin tran;
  --какие то действия


б) в другом батче попытались выполнить
commit tran; --и вот на этом месте получили бы Exception


то такого вы не добьетесь.

Сообщение было отредактировано: 17 ноя 21, 18:57
17 ноя 21, 18:57    [22397167]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4434
vi0
felix_ff,
к примеру, хочу сделать тест, который вызовет исключение при фиксации транзакции


В отличие от названия топика это объясняет многое.
А что такое у нас "фиксация транзакции"? И что такое "исключение" ?
17 ноя 21, 18:57    [22397168]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1909
vi0,

в теории можно поиграться с чем то вроде этого:
--batch 1
set xact_abort on;

drop table if exists #tmp;
create table #tmp (id int);

begin tran;
--//batch 1


--batch 2
declare @needException bit = 0; --изменить для выброса исключения в третьем батче
insert into #tmp values (1);
if @needException = 1 set context_info 0x1 else set context_info 0x0;
select @@trancount as [batch2_trancount], xact_state() as [batch2_xact_state]
--//batch 2;


--batch 3
select @@trancount as [batch3_trancount], xact_state() as [batch3_xact_state]; 
begin try
     if context_info() = 0x1 select 1/0;
     commit tran;
end try
begin catch
     select @@trancount as [batch3_trancount], xact_state() as [batch3_xact_state_in_catch]; 
     commit tran;
end catch
--//batch 3
17 ноя 21, 19:16    [22397175]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
vi0
Как это сделать?
set xact_abort on;

begin tran;

begin try
 throw 50000, 'Exception', 1;
end try
begin catch
end catch;

commit;
17 ноя 21, 20:24    [22397195]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
vi0
Member

Откуда:
Сообщений: 313
спасибо за примеры
а как вы считаете, какие могут быть реальные причины исключений при фиксации обычной транзакции?
18 ноя 21, 08:41    [22397286]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
vi0
какие могут быть реальные причины исключений при фиксации обычной транзакции?
транзакция в нефиксируемом состоянии
переполнение ЖТ
железячные проблемы
18 ноя 21, 09:07    [22397291]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
msLex
Member

Откуда:
Сообщений: 9541
invm
vi0
какие могут быть реальные причины исключений при фиксации обычной транзакции?
транзакция в нефиксируемом состоянии
переполнение ЖТ
железячные проблемы


Проблемы с фиксацией транзакции на синхронной реплике
18 ноя 21, 09:28    [22397296]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4434
vi0
спасибо за примеры
а как вы считаете, какие могут быть реальные причины исключений при фиксации обычной транзакции?


Вы уходите от ответа на вопрос
"А что такое у нас "фиксация транзакции"? И что такое "исключение" ?"
похоже и сами не в курсе.


Реальная причина


declare @x int =1
declare @y int =0
declare @j int =997
set @j = @x/@y
18 ноя 21, 11:22    [22397350]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4434
Ролг Хупин
vi0
спасибо за примеры
а как вы считаете, какие могут быть реальные причины исключений при фиксации обычной транзакции?


Вы уходите от ответа на вопрос
"А что такое у нас "фиксация транзакции"? И что такое "исключение" ?"
похоже и сами не в курсе.


Реальная причина


declare @x int =1
declare @y int =0
declare @j int =997
set @j = @x/@y


-- test
21 ноя 21, 09:57    [22398538]     Ответить | Цитировать Сообщить модератору
 Re: Как смоделировать исключение при фиксации транзакции?  [new]
vi0
Member

Откуда:
Сообщений: 313
спасибо, коллеги
всё понятно
21 ноя 21, 16:27    [22398681]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить