Vlad
Дата: 01.12.2000 13:37:02
Подскажите как вместо системного сообщения об ощибке (например #512) подсунють клиенту нечто более вразумительное, т.е. обработать ошибку по своему (система клиент сервер SQL7 - Access2000). Ведь когда я, например, в трригере обнаруживаю эту ошибку (If @@ERROR = 512 ...) сообщение уже несеться к клиенту и транзакция откатывается. Заменить его с помощью sp_addmassage нельзя по определению. В доках есть какой грязный намёк на handler С или С++, но что конкретно они имеют в виду, и обязательно ли на Си?
Павел
Дата: 01.12.2000 15:47:41
Не доводи до ошибки. Проверяй все необходимые для безошибочной работы условия руками. Ну а если все-таки проверка что-то выявляет то
Raiserror('Текст сообщения юзеру', 16, 1)
Rollback Transaction
Return
(про циферки в Raiserror читай в Books OnLine)
A2K без всякой дополнительной обработки покажет именно текст ошибки.
Fompro
Дата: 01.12.2000 18:56:16
Если у Вас решение об откате транзакции принимает клиент (т.е. Вы можете обработать код ошибки), то никаких проблем нет. Если на сервере - то, к сожалению, поезд уже ушёл. Что же касается установки MSG Handler & Error Handler, то они устанавливаются ,когда Вы сами обрабатываете ошибки (т.е. уровень С для DBLIB), или можете сделать собственную обработку поверх существующей, но для этого хорошо бы знать Handler старого обработчика.