Re: xp_cmdshell (вернуть 1) | |
---|---|
abil Сообщений: 247 Откуда: Красноярск Дата регистрации: 01.12.2003 |
Цитата:я немного неверно выразился, рантайм библиотеки должны быть доступны учетной записи под которой работает процесс MS SQL сервера, например через пути в профиле этой учетной записи. prodok.exe стартанет и будет висеть, попытаясь вывести на экран сообшение о недоступности библиотек VFP. |
Re: xp_cmdshell (вернуть 1) | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Это не бесконечное выполнение, это юзеровский диалог висит и не пускает прогу дальше. У фокса всегда есть окно, поэтому надо считать или визуализировать окно, что бы посмотреть, что там не так. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xp_cmdshell (вернуть 1) | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Ну собственно, продулай эксперимент.
1. Запусти exe от имени сервера (exe-шник повиснет) 2. Найди свой запущенный процесс (как найти здесь forum.foxclub.ru) ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xp_cmdshell (вернуть 1) | |
---|---|
Atlant Сообщений: 204 Откуда: Новосибирск Дата регистрации: 01.09.2005 |
Я уже сделал, чтобы процесс сервера и моего приложения стартовали из-под моей учетки.
|
Re: xp_cmdshell (вернуть 1) | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Хорошо, а какую-нибудь консольную прогу запустить от имени сервера получается типа rar.exe
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xp_cmdshell (вернуть 1) | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Поставь ProcessExplorer (сейчас он с сайта МС доступен), и когда процесс "висит" посмотри какие dll-ки подгружены в его адресное пространство... В принципе эта информация доступна и через плагин ФАРа Process List. Проверь, есть ли среди них dll-ки рантайма (vfpXr.dll, vfpXrenu.dll, где X версия фокса).
Кстати, насчёт конфига - он вкомпилирован в exe или просто "лежит рядом"? Лучше если вкомпилирован... P.S. Я в принципе рисовал "невизуальную" прогу - она и сейчас на серваке под nncron-ом крутится (ессно что без десктопа) - когда-то даже пробовал через srvany её запускать - работало кое как, но мне не понравилось. Т.е. технологических препятствий быть не должно - что-то в настройках видимо мешает. Попробуй просто dll-ки рантайма на сервере положить в папку проги. Если не поможет, то вычисти из реестра инфу о их регистрации и зарегистрируй повторно руками (это помогает в случае кривых прав на ветки реестра). ------------------ WBR, Igor |
Re: xp_cmdshell (вернуть 1) | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Игорь, я чЁ то не понял как прога под NT-ядром может работавть без десктопа, а тем более прога запущенная от имени какого-то юзера (возможно ты говоришь про отсутствие UI) ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xp_cmdshell (вернуть 1) | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Естественно что в программе нету UI, там принудительно включена генерация исключений если вдруг проге захочется чего-нить "показать", отключена реакция на логофф (дабы процесс не прерывался если юзер выходит из системы)... Ну т.е. то что обеспечивается SYS(2335, 0) и SYS(2340, 1)
И программа работает на W2K3 сервере (запускается через nncron под правами локального админа, плюс ещё мапит сетевую шару под правами доменного юзера) - БЕЗ наличия на нём залогиненного "оператора". Т.е. самой проге недоступен "десктоп" (его просто нету, т.к. нету залогиненного пользователя в системе - в этом режиме есть лишь логин-десктоп, а он, конечно же, недоступен проге). Тут есть некоторый нюанс - как не мучай фокс, а он всё одно будет создавать exe с "меткой" подсистемы GUI - добиться генерации "истинно консольного" приложения CUI невозможно - хотя сомнительно чтобы скл-сервер это проверял, но всё-же... Если дело в этом, то видимо единственный вариант - оформлять код в dll, а уж её дергать из написанного на C или том-же C# "истинно консольного" приложения. ------------------ WBR, Igor |
Re: xp_cmdshell (вернуть 1) | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Игорь, ты кстати проверял это ф-ии SYS(2335, 0) и SYS(2340, 1) работают для просто exe?
Не знаю как nncron, а для сервиса MSSQL Agent рабочий стол создаётся даже если нет залогиненного юзера, здесь forum.foxclub.ru мои потуги найти десктоп фоксовского exe запущенного агентом сервера. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xp_cmdshell (вернуть 1) | |
---|---|
abil Сообщений: 247 Откуда: Красноярск Дата регистрации: 01.12.2003 |
Я сечас проверил, как все работает. На 2005 не так, как я написал.
В свойствах sql server на закладке безопасность нужно включить серверную учетную запись-посредник , указать её логин и пароль , с правами, в контексте этой учетной записи на сервере будут запускаться программы через xp_cmdshell. Затем нужно разрешить работу xp_cmdshell c помощью sp_configure sql скрипт:
на сервер в положил содержимое приложенного проекта там prg:
скрипт
в процессах ничего не висит. Исправлено 1 раз(а). Последнее : abil, 08.06.09 14:28 |
Re: xp_cmdshell (вернуть 1) | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Ну вот, всё дело оказалось в правах
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xp_cmdshell (вернуть 1) | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Работают. В хелпе не указан IMHO весьма важный момент - READ EVENTS трактуется системой как "модальное состояние", и соответственно после SYS(2335, 0) эта команда генерирует ошибку. Была глупая идея повесить процесс чтоб он по внутреннему таймеру срабатывал. Но в результате "услужливости" фокса сделал значительно проще и надёжнее (особенно в плане обработки ошибок - чтобы сервис не умирал "навсегда") - запуск внешним таймером-планировщиком nncron, а сама программа - просто "однопроходная" обработка ------------------ WBR, Igor |
© 2000-2024 Fox Club  |