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

автор
Msg 3234, Level 16, State 2, Line 1
Logical file '<logical file name>' is not part of database '<database name>'. Use RESTORE FILELISTONLY to list the logical file names.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.


Ловится только

автор
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.


Как поймать весь список ошибок, чтобы логировать в табличку?
5 май 16, 10:40    [19137072]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
мимобегущий
Guest
имею ввиду поймать в catch или еще как-то
5 май 16, 10:41    [19137078]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
Crimean
Member

Откуда:
Сообщений: 13148
"на клиенте". старая проблема. и на Connect есть. ловится только 1 исключение. поддержки коллекций никто не делал к сожалению
5 май 16, 11:08    [19137231]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
o-o
Guest
К сожалению, ловится как раз не первое, а второе, менее информативное сообщение.
У нас бывают проблемы с навешиванием ПК, через alter table add constraint.
Catch пишет в лог, но туда попадает ниочемное cuould not create constraint. See previous errors.
Я выхожу из положения так: ПЕРЕД созданием констрейнта в лог пишу(это все в процедуре) : the next instruction is... и там вписываю всю инструкцию, где есть имя и таблицы, и констрейнта.
5 май 16, 11:31    [19137400]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
мимобегущий
Как поймать весь список ошибок, чтобы логировать в табличку?
Это можно отлавливить асинхронно через event notifications.
5 май 16, 12:14    [19137728]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
Crimean
Member

Откуда:
Сообщений: 13148
invm
Это можно отлавливить асинхронно через event notifications.


это если на c# к примеру. а если на t-sql то разве что через xevents какие-нить :)
5 май 16, 16:07    [19139026]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Crimean
а если на t-sql то разве что через xevents какие-нить :)
Серверный Event Notification на USER_ERROR_MESSAGE + Service Broker + внутренняя активация.
5 май 16, 16:16    [19139065]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
Glory
Member

Откуда:
Сообщений: 104760
invm
Crimean
а если на t-sql то разве что через xevents какие-нить :)
Серверный Event Notification на USER_ERROR_MESSAGE + Service Broker + внутренняя активация.

Не проще ли простую трассировку ?
Конечно файлик - это не таблица, но через документированную функцию он все равно выглядит как таблица
5 май 16, 16:24    [19139106]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
Crimean
Member

Откуда:
Сообщений: 13148
я для таких целей делал себе CLR модуль. который все ошибки мне возвращал списком.
5 май 16, 17:03    [19139364]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Glory
Не проще ли простую трассировку ?
Конечно файлик - это не таблица, но через документированную функцию он все равно выглядит как таблица
ТС'у нужен аудит ошибок в таблицу.
ИМХО, как раз проще писать напрямую в таблицу аудита, чем периодически перекладывать в нее содержимое файлов, при этом еще учитывать что было переложено, а что нет.
5 май 16, 17:13    [19139409]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
Glory
Member

Откуда:
Сообщений: 104760
invm
Glory
Не проще ли простую трассировку ?
Конечно файлик - это не таблица, но через документированную функцию он все равно выглядит как таблица
ТС'у нужен аудит ошибок в таблицу.
ИМХО, как раз проще писать напрямую в таблицу аудита, чем периодически перекладывать в нее содержимое файлов, при этом еще учитывать что было переложено, а что нет.

ну так в этом и вопрос - чем пользовательская таблица лучше, чем стандартная трассировка в файл
Если и той и к другому можно обращаться через select
5 май 16, 21:25    [19140172]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Glory
ну так в этом и вопрос - чем пользовательская таблица лучше, чем стандартная трассировка в файл
Как минимум
- возможностью индексированного поиска
- сжатием данных (если доступно)
- отсутствием необходимости в дополнение к резервированию БД резервировать файлы трассировки (возможно решается с помощью FILESTREAM/FILETABLE, не знаю, не проверял)
5 май 16, 21:54    [19140253]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
Glory
Member

Откуда:
Сообщений: 104760
invm
Glory
ну так в этом и вопрос - чем пользовательская таблица лучше, чем стандартная трассировка в файл
Как минимум
- возможностью индексированного поиска
- сжатием данных (если доступно)
- отсутствием необходимости в дополнение к резервированию БД резервировать файлы трассировки (возможно решается с помощью FILESTREAM/FILETABLE, не знаю, не проверял)

Это вы рассказали о том, чем какая-то гипотетическая таблица отличается от гипотетического файла.
5 май 16, 22:04    [19140286]     Ответить | Цитировать Сообщить модератору
 Re: получить все ошибки в catch  [new]
мимобегущий
Guest
ого сколько вариантов!

invm, круто!
6 май 16, 17:42    [19143778]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить