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

Откуда:
Сообщений: 651
Приветы. Есть такая общая задача.

Имеется база данных, в которой периодически случаются ошибки - как предвиденные, так и непредвиденные. Хочется их логгировать в таком регламенте, который позволит не только понимать место возникновения (хп + системный номер ошибки), но и даст информацию о том, к какому уровню или объекту бизнес-логики они относятся - чтобы внешним системам для понимания ошибки не нужно было быть знакомым со структурой бд, названиями хп и так далее.
Кроме того, возможно, в ваших приложениях наверняка используются и другие системы измерения, в которых одни и те же ошибки можно трактовать по-разному.
К примеру: при операции внесения платежа в биллиновую систему возникает непредвиденное исключение. С одной стороны, это внутренняя ошибка сервера, с другой - ошибка проведения платежа, с третьей - еще что-нибудь.

Да, можно ввести единое нумерованое пространство для всех сразу типов ошибок - напр., от 1 до 1000000. Но тогда после внесения в систему новых и новых описаний ошибок мы получим полный хаос.

Каким образом вы реализуете систему управления и логгирования ошибок, чтобы информация о них содержала не только "системное" место возникновения и тип ошибки, но и некоторую информацию, понятную для бизнес-логики и внешних приложений? А если имеется несколько пересекающихся ракурсов бизнес-логики?

Пока что в голову приходит древовидное нумернованное пространство, где номер ошибки AABBCCDD описывает:
AA - раздел бизнес-логики (в нем есть место и для внутренних системных ошибок сервера) - напр., "Обработка платежй"
BB - логический отдел вышестоящего раздела - напр. "Проведение нового платежа"
CC - процедура вышестоящего раздела - напр., "Проверка проведенного платежа"
DD - user-defined ошибка вышестоящей процедуры - напр., "Истек тайм-аут запроса"

Эта структура громоздка, примитивна и неповоротлива, но в принципе способна реализовать задачу.

Может, поделитесь более умными соображениями?

Благодарю.
11 дек 09, 17:27    [8055756]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочивание user-defined ошибок в БД  [new]
Dmitry Gurianov
Member

Откуда:
Сообщений: 651
В общем, я еще подумал, и понял, что задача нерешаема :)
Внешние системы могут иметь разные модели бизнес-логики, в т.ч. разной глубины, и если пытаться хранить описание произошедшей ошибки в терминах внешних систем (мэппировать), это потребует сложных наворотов - далеко не всегда можно смэппировать однозначной связью. Особенно если структура модели БД и структура бизнес-модели внешнего приложения не подобны друг другу.
Короче говоря, общее решение тривиальное: мэппировать ошибки внутреннего инфопространства ко внешним прямо внутри процедур, либо выдавать вовне ошибку в терминах внуренней логики, а там пусть делают чо хотят...
Эх.
С пятницей, друзья =)
11 дек 09, 19:11    [8056398]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить