Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 почему съедается первое сообщение об ошибке.  [new]
beg_inner
Guest
мистика какая-то.
хотела воспроизвести свою ситуацию упрощенно,
написала такое:
create table a.t(id int not null)
insert into a.t values(1), (1)

begin try
   alter table a.t add constraint pk_t primary key  (id)
   print 'ok'
end try

begin catch
   print error_message()
end catch


запускаю.
выдает 2 ошибки, как положено. в первой указано, что именно нарушается.
но это не моя ситуация, у меня-то как раз выдает не 2 ошибки, а 1,
причем вторую, а я бы предпочла первую, более содержательную.

ок, переделываю под свою ситуацию более точно:
begin try
   if object_id('a.t1') is not null drop table a.t1
   select * 
   into a.t1
   from a.t

   alter table a.t1 add constraint pk_t1 primary key  (id)
   print 'pk created'
end try

begin catch
   print error_message()
end catch


ок, теперь он первую ошибку "съел", выдал только вторую:
Could not create constraint. See previous errors.
хотела уже копипастить в форум,
выполняю снова первый вариант,
чтоб еще и текст ошибок запостить.
и вот он уже не выдает 2 ошибки, а снова только вторую.
но 5 минут назад этот же код их давал 2.
это как так?
и как мне добиться, чтоб первую выдавал?
2 апр 12, 12:45    [12350360]     Ответить | Цитировать Сообщить модератору
 Re: почему съедается первое сообщение об ошибке.  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
beg_inner, но про первую ошибку вы не призаетесь и под пытками? Т.е. надобно догадаться что там у вас писало?
2 апр 12, 13:30    [12350860]     Ответить | Цитировать Сообщить модератору
 Re: почему съедается первое сообщение об ошибке.  [new]
beg_inner
Guest
про duplicate key писал.
по крайней мере, я его на это подбивала.
вроде вот это:
Msg 1505, Level 16, State 1, Line 1
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'a.t2' and the index name 'pk_t2'. The duplicate key value is (1).
2 апр 12, 13:42    [12350991]     Ответить | Цитировать Сообщить модератору
 Re: почему съедается первое сообщение об ошибке.  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
beg_inner,

12083878
2 апр 12, 13:45    [12351024]     Ответить | Цитировать Сообщить модератору
 Re: почему съедается первое сообщение об ошибке.  [new]
beg_inner
Guest
Shakill,

да уж, оно самое. спасибо
2 апр 12, 13:47    [12351037]     Ответить | Цитировать Сообщить модератору
 Re: почему съедается первое сообщение об ошибке.  [new]
beg_inner
Guest
одно не могу понять:
как же ВНАЧАЛЕ я получала-таки 2 ошибки.
try catch не убирала.
единственно, что было странно, что он когда 2 ошибки давал, красным писал.
как будто не видел мой try catch, а вываливал свое традиционное...
2 апр 12, 13:51    [12351071]     Ответить | Цитировать Сообщить модератору
 Re: почему съедается первое сообщение об ошибке.  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
beg_inner,

вероятно, вначале в окне ssms были выделены строки внутри try..catch
2 апр 12, 13:54    [12351107]     Ответить | Цитировать Сообщить модератору
 Re: почему съедается первое сообщение об ошибке.  [new]
beg_inner
Guest
Shakill,

раз чудес не бывает, а воспроизвести не удается, то наверное так и было
2 апр 12, 13:58    [12351142]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить