powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Полный текст ошибки
12 сообщений из 12, страница 1 из 1
Полный текст ошибки
    #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
Полный текст ошибки
    #39773647
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На стороне сервера -- никак.
...
Рейтинг: 0 / 0
Полный текст ошибки
    #39774222
prog882
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RuslanSharipov,
Код: sql
1.
2.
3.
begin catch	
;throw
end catch;
...
Рейтинг: 0 / 0
Полный текст ошибки
    #39774415
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuslanSharipov,

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

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

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

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

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

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

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


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