Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Полный текст ошибки / 12 сообщений из 12, страница 1 из 1
13.02.2019, 23:23
    #39773634
RuslanSharipov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
Добрый вечер. Подскажите пожалуйста как получить "предыдущую ошибку" в блоке catch:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
create procedure dbo.test
as begin
  create table #test (
	id int not null,
	name varchar(10)
  );

  insert into #test(id, name)
  values (1, 'a'), (1, 'b');

  alter table #test add constraint testPK primary key clustered (id);
end;
go

begin try
  execute dbo.test;
end try
begin catch	
  select
	ERROR_NUMBER() AS ErrorNumber,
	ERROR_SEVERITY() AS ErrorSeverity,
	ERROR_STATE() AS ErrorState,
	ERROR_PROCEDURE() AS ErrorProcedure,
	ERROR_LINE() AS ErrorLine,
	ERROR_MESSAGE() AS ErrorMessage;
end catch;

drop procedure dbo.test;



В данном случае error_message вернет "Нельзя создать ограничение. См. предыдущие ошибки.", хотя на самом деле было выдано две ошибки:

Сообщение 1505, уровень 16, состояние 1, строка 11
Выполнение инструкции CREATE UNIQUE INDEX прервано, поскольку обнаружен повторяющийся ключ для объекта с именем "dbo.#test_______________________________________________________________________________________________________________0000007252FB" и индекса с именем "testPK". Повторяющееся значение ключа: (1).
Сообщение 1750, уровень 16, состояние 0, строка 11
Нельзя создать ограничение. См. предыдущие ошибки.
...
Рейтинг: 0 / 0
14.02.2019, 02:39
    #39773647
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
На стороне сервера -- никак.
...
Рейтинг: 0 / 0
15.02.2019, 09:08
    #39774222
prog882
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
RuslanSharipov,
Код: sql
1.
2.
3.
begin catch	
;throw
end catch;
...
Рейтинг: 0 / 0
15.02.2019, 13:04
    #39774415
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
RuslanSharipov,

DDL операции не рекомендуют использовать в процедурах. Возможно, это одна из причин.
...
Рейтинг: 0 / 0
15.02.2019, 13:07
    #39774421
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
Владислав КолосовRuslanSharipov,

DDL операции не рекомендуют использовать в процедурах. Возможно, это одна из причин.\
Пятница перестала быть томной
...
Рейтинг: 0 / 0
15.02.2019, 14:28
    #39774504
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
Владислав КолосовRuslanSharipov,
DDL операции не рекомендуют использовать в процедурах. Возможно, это одна из причин.
то есть не рекомендована работа со временными таблицами?
...
Рейтинг: 0 / 0
15.02.2019, 14:50
    #39774530
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
Shakill,

придирки. Здесь важен дух, а не буква. Много писать, лень.
...
Рейтинг: 0 / 0
15.02.2019, 14:53
    #39774531
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
Владислав КолосовDDL операции не рекомендуют использовать в процедурахКто не рекомендует? И в каком контексте?
...
Рейтинг: 0 / 0
15.02.2019, 21:41
    #39774777
RuslanSharipov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
prog882,
throw лишь пробросит исключение, мне же надо его обработать на уровне сервера.

Понятно, что на стороне сервера это к сожалению невозможно в таком контексте. Безусловно просто стоит избегать таких случаев(и
в приведенном коде вначале создавать индекс, а только потом вставлять записи в таблицу). Просто думал, что есть возможность как-то вытащить, к примеру, исходя из идентификатора сеанса, необходимую информацию хотя бы из журнала ошибок.
...
Рейтинг: 0 / 0
15.02.2019, 21:43
    #39774778
RuslanSharipov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
Владислав КолосовRuslanSharipov,

DDL операции не рекомендуют использовать в процедурах. Возможно, это одна из причин.

Эдакая невидаль. Извольте цитату и автора
...
Рейтинг: 0 / 0
15.02.2019, 21:47
    #39774779
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
Владислав КолосовShakill,

придирки. Здесь важен дух, а не буква. Много писать, лень.Нет никакого духа, кроме тухлячка. MS до сих пор в своем enterprise-решении не может ни в call stack, ни в нормальный error-хэндлинг.
...
Рейтинг: 0 / 0
18.02.2019, 12:54
    #39775497
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный текст ошибки
Закидали контекстом :) Я бы добавил к этому списку пользовательские сообщения для ограничений. За 20 с лишним лет можно было придумать способ.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Полный текст ошибки / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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