Захват нескольких сообщений об ошибках из одного оператора внутри TRY CATCH

Я запускаю пакет операторов для нескольких столбцов и таблиц и хочу получить информацию о том, какие ошибки происходят.

Этот оператор меняет тип (с varchar на nvarchar), и в случае сбоя он возвращает 2 ошибки.

Сообщение 5074, уровень 16, состояние 1, строка 1 Объект 'DF_XXX_YYY' зависит от столбца 'YYY'.

Сообщение 4922, уровень 16, состояние 9, строка 1 ALTER ТАБЛИЦА ALTER COLUMN Описание не удалось, поскольку один или несколько объектов обращаются к этому столбцу.

Однако, когда я помещаю его в блок TRY / CATCH и выбираю ERROR_MESSAGE () , он возвращает только вторую ошибку:

ALTER TABLE ALTER COLUMN Description failed потому что один или несколько объектов обращаются к этому столбцу.

В идеале я бы попросил вернуть первое сообщение, так как оно гораздо информативнее.

Точный оператор SQL:

begin try
    alter table XXX
    alter column YYY
    nvarchar(200)
end try
begin catch
    select ERROR_MESSAGE(), ERROR_LINE(), ERROR_NUMBER(), ERROR_PROCEDURE(), ERROR_SEVERITY(), ERROR_STATE()
end catch

Кто-нибудь знает, как я могу получить более информативное сообщение? ( @@ ERROR также возвращает вторую ошибку)

12
задан AHiggins 18 September 2015 в 14:48
поделиться