Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

2000 Вызов внешнее приложение dll [MSSQL]


Страницы:   1 2

KAA ©   (2003-05-12 11:07:00) 

Есть dll с процеурами. Необходимо из MSSQL вызвать нужную процедуру из этого dll файла.

Я могу создать Extended Stored Procedures
EXEC master..sp_addextendedproc MkDirTest, "c:\sqldll.dll"
Но вызов процедуры MkDirTest выдает ошибку:
Cannot load the DLL c:\sqldll.dll, or one of the DLLs it references. Reason: 126(Не найден указанный модуль.).


KAA   (2003-05-16 12:30:00) [1]

Еще один вопрос по поводу запуска DLL из SQL.
Я создал Extended Stored Procedures, все работло, теперь мне нужно НЕ ПЕРЕЗАПУСКАЯ сам SQL сервер удалить эту самую DLL. Но она в данный момент используется, и удалять ее мне не дает система. Что нужно сделать, чтоб эта DLL "освободилась"? Единственный вариант, который я нашел, это перезапустить сам SQL сервер, но этот вариант не подходит.


KAA   (2003-05-13 14:15:00) [2]

Ну я ожидал нечто более подробное. Что, куда, как, по каким протоколам. Вообще примеры должны быть простыми и понятными, и содержать минимум, т.е. ничего лишнего.


sniknik   (2003-05-13 11:01:00) [3]

> что-то даже не видел описния, что он делает
прямо под ссылкой на скачивание читать не пробовал?

MS SQL Alerter (SQLAlert.zip, 3 Jul 2000, ~52K, D4+). MS SQL extended stored procedure и приложение, демонстрирующие посылку сообщений с SQL сервера по его инициативе (например, в триггере) и прием их в приложении, запущенном на том же или другом компьютере локальной сети. Полезно и как пример написания extended stored procedure на Delphi, и как пример использования Named Pipes для обмена сообщениями по локальной сети (класс PipeControler).


KAA   (2003-05-13 09:43:00) [4]

С 1С я пока не связывался и желанием связываться не горю. :) У меня есть своя база, которую я и пестую, а клиентом занимается другой человек. Подобные навороты с dll - не моя специализация.

А по поводу SQL Alert, так я там что-то даже не видел описния, что он делает. А пример я нашел очень простой, буквально пара процедур и пара объявлений. А цель очень проста, подать по UDP сигнал в нужный момент.


sniknik   (2003-05-12 23:50:00) [5]

> Вообще честно говоря в этих исходниках черт голову сломит.
;о))))
э да ты батенька под 1С dll-и не писал (имею ввиду не стандартный COM с которыми он тоже работает после регистрации в системе а "родные" написанные под 1С и регистрируемые изнутри) после них эти ясны и прозрачны как слеза ребенка. :о)

> больше сделать средствами самого sql
есть уже такая вещь как SQL Alert и у самого MSSQL дополнительный пакет, но там скорее всего оповещения только "своим" SQL серверам. а не широковешательные посылки. но конкретного по нему ничего сказать не могу (не пользовался, только читал да еще на вражеском, не все понял) могу только послать не мелкософт... ищи.


KAA   (2003-05-12 19:17:00) [6]

А чем этот sql так выделяется. Вот у меня есть старая dll, ее можно отработать. По идее это библиотека с опредеенными процедурами. В чем вообще принципиальная разница межу запуском из sql или еще откуда?

Вообще честно говоря в этих исходниках черт голову сломит, чтоб их под свои нужды переделывать. Хорошо бы как можно больше сделать средствами самого sql, и как можно меньше выполнять всякими дополнительными модулями.


sniknik   (2003-05-12 19:03:00) [7]

> Но исходники того примера dll крайне непонравились программисту.
ну это его проблемы, надо писать именно так и все тут (по другому как правило не работает :о).
"обертка" для Opends60.dll в том примере (имею в виду "мой", ваш "из другого источеника" не видел) модуль srv.pas
обрати внимание в нем
const
...
srvdll = "opends60.dll";

> Хотя есть другой вопрос, из sql по UDP можно отправить сигнал?
именно для подачи сигнала клиентам (был такой вопрос), автор и дал эту ссылку с тем примером, там оповещение шлется через pipe но при желании можно переделать и на UDP. (думаю без проблем, но это предположительно, не пробовал)

p.p.s. начал бы сразу внимание на исходники обращать, сэконимил бы себе день.


KAA   (2003-05-12 18:32:00) [8]

Запускать левые фалы на сервере, это все-равно что курить на бенозаправке. Не обязательно должно все взорваться, но сам факт нарушения правил уже череват. Пробую я то на тестовой базе, а тестового сервера у меня нет.

Вообщем использовали подобную dll из другого источеника, выяснили что в нашей dll что-то там недописано, в частности в рабочей подключался некий модуль Opends60.dll. Но исходники того примера dll крайне непонравились программисту, пишущего нашу dll.


Хотя есть другой вопрос, из sql по UDP можно отправить сигнал?


Mitko   (2003-05-12 17:42:00) [9]

http://www.berenddeboer.net/delphi/index.html


sniknik   (2003-05-12 17:27:00) [10]

сдаюсь ;о)). фраза
> Сам факт запуска какой-то программы из инета на работающем сервере мне уже не нравится.
меня убила. я то думал что все и всегда должны все пробовать на тестовой базе, как делаю я сам. но конечно дело хозяйское, только как бы не было потом мучительно больно ...

всетаки скачал пример (а то что проверял давно, посеял), и попытаюсь еще раз обратить внимание (вам то недосуг вникать в исходники, а зря)

информация к размышлению.
из инсталяции "моей" dll
....
- copy BIN\xp_acnt.dll to MSSQL\BINNdirectory;
- run install.sql in SQL Query Analizer, current database must be "master";

install.sql = sp_addextendedproc " xp_send_params_to_pipe", "xp_acnt.dll"

которая присутствует именно в таком виде (Case Sensitive, maybe)
в
exports
GetXpVersion name "__GetXpVersion",
xp_send_params_to_pipe name " xp_send_params_to_pipe";

а у Вас так же? в той, правильной, директории имеющаяся экспортируемая процедура регистрируется?

p.s. все больше доставать не буду. а то нехорошо получается, пытаюсь склонить человека проявить активность в решении своей же проблемы а он явно ждет готового ответа.


KAA   (2003-05-12 16:20:00) [11]

Нет, все находится на одной машине, и даже путь к ДЛЛ я устанавливаю кликнув на сам файл средствами самого sql.


Medvedka   (2003-05-12 16:06:00) [12]

Может дело в том, что SQL server находится на другой машине...
8-))))))


KAA   (2003-05-12 16:06:00) [13]

Сам факт запуска какой-то программы из инета на работающем сервере мне уже не нравится. Причем это не понравится не только мне, а если еще что-нибудь случится...
Что вообще эта длл делает, как она себя проявляет? Вникать в исходники я не в состоянии.


sniknik   (2003-05-12 14:54:00) [14]

то что она уже написана ясно с самого начала. неясно почему не хочеш попробовать
взять 100% рабочую, подключить (описание подключения есть) проверить что работает, и сделать то же самое для "ИМЕННО ЭТОЙ DLL",
в случае если одна работает другая нет, тогда можно говорить более определенно, может твоя написана не для MSSQL (не по правилам/...), может тот модуль не найденый просто не описан, или dll не зарегистрирована. да мало ли чего, отказ от сравнения и изучения не лутший способ решить проблему.


KAA   (2003-05-12 14:20:00) [15]

Я сам не занимаюсь написанием dll, мне там не на что смотреть. Сама dll уже написана, передо мной задача либо ее запустить, вернее запустить конкретную процедуру из этой dll, либо сказать почему нельзя запустить ИМЕННО ЭТУ DLL.


sniknik   (2003-05-12 13:04:00) [16]

чего то мы друг друга не понимаем.

делаеш, но судя по вопросу чегото не получается, а по тому примеру можно посмотреть как получается (и программа и компиляция и подключение/вызов описано).

ладно будем считать я не понял чего ты хочеш.


KAA   (2003-05-12 12:51:00) [17]

Подключение Extended Stored Procedures в sql? Я тоже самое делаю.


sniknik   (2003-05-12 12:37:00) [18]

там кроме того описано как подключить готовую (после скомпиляния), а это то тебе и нужно. ?


KAA   (2003-05-12 12:25:00) [19]

А в чем принципальные особенности ДЛЛ в этом примере?
Просто саму длл пишу не я, мне нужно использовать будет уже готовую. Сама длл работает, мне нужно просто отработать процедуру из этой длл.


sniknik   (2003-05-12 12:10:00) [20]

http://home.earthlink.net/~akonshin/delphi_ru.htm
вот здесь есть рабочийпример (MS SQL Alerter) как такую dll написать, пробовал, но там насколько помню dll рекомендуется в bin\ ложить (прописана). Во всяком случае посмотреть как реализовано полезно будет.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо