powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Extended Stored Procedure, проблемы
4 сообщений из 4, страница 1 из 1
Extended Stored Procedure, проблемы
    #32020194
Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал xp, так мало того, что ее отлаживать невозможно, она не выгружается из памяти DBCC xp_perf (FREE) не работает, подменить DLL невозможно, только через рестарт сервера. Если произошел except в DLL в момент работы (отлаживаем !), то повторно xp не стартует, тупит ровно минуту и вываливается без сообщений. Просто подлости со всех сторон !
Кто имеет опыт написания и отладки xp, что скажут ?
...
Рейтинг: 0 / 0
Extended Stored Procedure, проблемы
    #32020198
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Выгрузка из памяти: DBCC dllname (FREE).
2. Отладка. BOL->Contents->Building SQL Server Applications->Extended Stored Procedure Programming->Programming Extended Stored Procedures->Debugging an Extended Stored Procedure. Работает на ура.
3. С exception'ами у меня работа построена следующим образом: вызов каждого самого верхнего метода (то есть тот, который зовется из сиквела) обвернут try catch, причем намертво, в конце есть catch(...). Все ошибки, которые происходят, надо вернуть сиквелу в понятном ему виде. Для этого есть функция srv_sendmsg. Она используется для посылки как информационных сообщений, так и ошибок.
...
Рейтинг: 0 / 0
Extended Stored Procedure, проблемы
    #32020201
Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поднимать сервер для отладки я не могу в принципе, поэтому, то, что советуется в BOL, применить не могу, а вот про Try|catch не понял, какой метод вызывается из сервера ?
Сервер проецирует DLL на себя, у DLL точка входа, через которую сервер вызывает функции DLL, там мы что-то пишем, связь обеспечивается библиотекой ODS, и если есть вызов srv_setcoldata (например), то он использует ODS Gateway, если malloc, то stdlib.lib .....
Так у меня засада в том, что except на CreatePipe происходит, я его ловлю по RETCODE, все путем , но после этого xp уже не работает до рестарта сервера.
...
Рейтинг: 0 / 0
Extended Stored Procedure, проблемы
    #32020281
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Поднимать сервер для отладки я не могу в принципе, поэтому, то, что советуется в BOL, применить не могу
Фигово, что еще сказать. Если у вас вся разработка и отладка ведется на рабочей базе, то это ваши проблемы. Мне советы BOL вполне помогли.

Про try catch. Внутри extended stored proc ты можешь вызывать еще кучу функций, делать кучу потенциально опасных действий и проч. Кидайся исключениями, вообще делай все, что хочешь, только на самом верхнем уровне поймай все и переведи в понятную сиквелу форму. Пример:

SRVRETCODE xp_hello(SRV_PROC* pSrvProc)
{
try
{
// ...
}
// всякие типизированные catch'и, чтобы посылать осмысленное сообщение об ошибке
catch(...)
{
MySendError(); // на крайний случай посылать сообщение о непонятной ошибке типа "Error occured"
return(XP_ERROR);
}

return (XP_NOERROR);
}

В MySendError нужно формировать мессагу и посылать ее серверу через srv_sendmsg. Насколько я помню, никаких фатальных ошибок при таком способе написания не происходило. Рестарт сервера не нужен был.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Extended Stored Procedure, проблемы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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