AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.01.2003, 12:54   #1  
Tony Green is offline
Tony Green
Участник
Аватар для Tony Green
 
184 / 25 (1) +++
Регистрация: 08.10.2002
Адрес: Москва
? Программный перезапуск AOS
Можно ли программно мягко перезапустить AOS внешней программой?

Чтобы пользователям рассылались предупреждения и они не могли логиниться, пока сервер останавливается.

Изначально задача стояла так: периодически мягко перезапускать AOS.
Старый 14.01.2003, 13:34   #2  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
Что за беда вынудила так часто его перезапускать?
Старый 14.01.2003, 14:21   #3  
Andrew Lyskov is offline
Andrew Lyskov
Участник
 
61 / 10 (1) +
Регистрация: 10.01.2002
Адрес: СПб, МСК
AOS - стандартный NT-сервис. используй команды NET START "имя сервиса", NET STOP "имя сервиса".
Старый 14.01.2003, 14:54   #4  
Tony Green is offline
Tony Green
Участник
Аватар для Tony Green
 
184 / 25 (1) +++
Регистрация: 08.10.2002
Адрес: Москва
lbs, это не мягкий перезапуск AOS'а. Предложенный способ, конечно, очень эффективный :-)

нужно, чтобы эффект при остановке AOS'а был такой же, как при нажатии кнопки Stop в окне Server Manager, а именно предупреждение уже подключенных юзеров и запрет на подключение новых, пока сервер останавливается.

ps: про беду ничего вразумительного ответить не могу. и вообще это не принципиальный вопрос - гораздо интереснее подумать, как это сделать :-)
Старый 14.01.2003, 15:09   #5  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
а вот и нет - гораздо интереснее подумать, как этого не делать
можно, конечно, пробовать лечить все глюки таким способом :-)) можно еще взять на вооружение периодическую переинсталляцию как говорил мне когда-то один системный администратор, "нужно чаще форматировать винчестер"
Старый 14.01.2003, 15:36   #6  
Andrew Lyskov is offline
Andrew Lyskov
Участник
 
61 / 10 (1) +
Регистрация: 10.01.2002
Адрес: СПб, МСК
Tony... я бы предложил придерживаться рекомендаций производителя и не запускать боевое приложение на одном сервере вместе с др. приложениями. Потом может дороже выйти... например, вы знаете сколько стоит 30 минут простоя вашего коммерческого отдела?
Старый 14.01.2003, 15:55   #7  
Tony Green is offline
Tony Green
Участник
Аватар для Tony Green
 
184 / 25 (1) +++
Регистрация: 08.10.2002
Адрес: Москва
lbs, может я чего-то не понял...

задача стоит такая: мягко и нежно остановить AOS для того, чтобы произвести репликацию данных, и потом запустить его снова. Это надо делать периодически и не руками. Тушить сервер надо для того, чтобы юзвери не успели поменять кучу данных во время процесса репликации. Жестокая остановка сервиса не подходит.
Старый 14.01.2003, 16:35   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Как решить задачу в лоб - не знаю.

Думаю, что ты уже нашел, как передать сообщения пользователям.
AOSSessionInfo::sendMessage(sesId, title, message);

Также думаю, что ты уже нашел, как принудительно завершить сессию.
boolean _force = true;
infolog.shutdown(_force);

А вот как программно дать команду AOS'у? Не знаю.
Может быть используя SysinfoAction? Но это вроде изврат.

Все равно остается задача как программно запустить AOS после всего этого безобразия... Нужны параметры командной строки для ax32serv.exe

Классный вопрос. Если найдешь, ответ, то дай знать пожалуйста.
Старый 14.01.2003, 16:40   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Кстати, как и говорил glibs можно поставить режим запуска ondemand.
Тогда принудительно AOS запускать не нужно.

Остается решить задачу программно завершить AOS.
Для этого нужно, чтобы AOS выполнил команду infolog.shutdown(true); по некоторой команде. Может все же через SysInfoAction?
Старый 16.01.2003, 11:52   #10  
Tony Green is offline
Tony Green
Участник
Аватар для Tony Green
 
184 / 25 (1) +++
Регистрация: 08.10.2002
Адрес: Москва
Если кому интересно, то всё закончилось написанием программки на дельфи, которая посылает сообщения в окошко сервер менеджера. Конечно немножко кривовато, но способа проще я не нашёл.
Старый 12.07.2005, 18:38   #11  
bio_unit is offline
bio_unit
Участник
Аватар для bio_unit
Сотрудники компании GMCS
Ex AND Project
 
119 / 77 (3) ++++
Регистрация: 21.04.2004
если не сложно, не могли бы Вы привести кусок кода, который посылает сообщение
интересует какое именно сообщение нужно посылать и параметры
Старый 10.05.2006, 14:03   #12  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от Tony Green
Если кому интересно, то всё закончилось написанием программки на дельфи, которая посылает сообщения в окошко сервер менеджера. Конечно немножко кривовато, но способа проще я не нашёл.
Подельтесь пожалуйста Вашим кодов мягкой остановки и последующего запуска АОС. Стоит примерно такая же задача: ежедневное (ночное) восстановление базы на сервере SQl 2005 из бэкапа, созданного на другом сервере SQL 2000. При этом на время восстановления необходимо монопольно владеть базой (остановитььАОС).

Заранее благодарен.
__________________
Александр
Старый 10.05.2006, 17:42   #13  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Ну Tony Green не отвечает, попробую я

Во вложении dll и примеры вызова ее функций из Axapta'ы (функции в кач-ве параметров принимают имя или адрес хоста, на котором запущен Server Manager и имя AOS).

Функции -

AosStart(HostName, AOSName) - запуск AOS
AosStop(HostName, AOSName) - остановка AOS
AosStatus(HostName, AOSName) - плучение статуса выполнения AOS

PS. Для работы функций требуется запущенный Server Manager

PPS Удалил вложение, исправление с правами доступа ниже
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 24.05.2006 в 11:30. Причина: Исправление прав доступа
Старый 11.05.2006, 08:29   #14  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от AndyD
Ну Tony Green не отвечает, попробую я

Во вложении dll и примеры вызова ее функций из Axapta'ы (функции в кач-ве параметров принимают имя или адрес хоста, на котором запущен Server Manager и имя AOS).

Функции -

AosStart(HostName, AOSName) - запуск AOS
AosStop(HostName, AOSName) - остановка AOS
AosStatus(HostName, AOSName) - плучение статуса выполнения AOS

PS. Для работы функций требуется запущенный Server Manager

Большое спасибо.
Только надо, чтобы остановка АОС программно выполнялась не из Аксапты.
Если и такой программный код есть, то буду очень признателен.
__________________
Александр
Старый 11.05.2006, 08:36   #15  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вообще-то там dll. Вызывать функции из нее можно из любого языка, поддерживающего их использование, в том числе из командной строки.
__________________
Axapta v.3.0 sp5 kr2
Старый 11.05.2006, 08:42   #16  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от AndyD
Вообще-то там dll. Вызывать функции из нее можно из любого языка, поддерживающего их использование, в том числе из командной строки.
Большое спасибо.
__________________
Александр
Старый 11.05.2006, 11:42   #17  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Прошу прощения, насчет командной строки погорячился.
Добавил новые функции для вызова из нее.

Вызывается так
Запуск AOT
rundll32 AosMgr.dll,AosStart_RunDll Axapta "Aaa 1" 1

Остановка AOT
rundll32 AosMgr.dll,AosStop_RunDll Axapta "Aaa 1" 1

После имени вызываемой функции указывается имя хости или IP адрес.
Второй параметр - имя AOS. Если в имени есть пробелы, то заключить в двойные кавачки.
Третий параметр - показывать (1)/не показывать (0 или не указывать параметр) сообщение в случае ошибки

Так же исправил ошибку при передаче имени AOS на сервер

Вложение в сообщении выше обновил.
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: andy.l (1), Logger (10).
Старый 15.05.2006, 15:16   #18  
andy.l is offline
andy.l
Участник
 
29 / 15 (1) ++
Регистрация: 17.04.2003
Адрес: Владимирская обл.
"Круто"
Получается, что с любого компа можно остановить AOS!
Так это же доступ без контроля, а проще говоря дырка.
Старый 15.05.2006, 15:28   #19  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Да. И я о том же
Dll практически делает то-же самое, что и AxCtrl.exe
__________________
Axapta v.3.0 sp5 kr2
Старый 19.05.2006, 13:57   #20  
Migel_84 is offline
Migel_84
Участник
 
45 / 12 (1) ++
Регистрация: 07.10.2005
Адрес: Череповец
Никто не пытался осуществить вышеописанное не в AXAPTA? Я пытаюсь сделать на делфи, но никак не получается, ошибку выдаёт. Вот код
Цитата:
...
function AOS(HostName,AOSName:String):integer;stdcall;
external 'AosMgr.dll' name 'AosStatus';

procedure TForm1.Button1Click(Sender: TObject);
begin
case AOS('10.10.0.10','AXAPTA') of <-ЗДЕСЬ ОШИБКА
-1: Label1.Caption := 'Connection timed out';
-2: Label1.Caption := 'Connection refused';
-3: Label1.Caption := 'Protocol error';
-4: Label1.Caption := 'Server manager not started';
-5: Label1.Caption := 'AOS stopped';
-6: Label1.Caption := 'AOS start pending';
-7: Label1.Caption := 'AOS stop pending';
-8: Label1.Caption := 'AOS running';
-9: Label1.Caption := 'AOS not found on server';
-10: Label1.Caption := 'Cannot assign requested address';
-11: Label1.Caption := 'Unknown TCP error';
-12: Label1.Caption := 'AOS unknown status';
else Label1.Caption := 'Unknown error';;
end;
end;
...
Кто-нибудь может подсказать?

Последний раз редактировалось Migel_84; 19.05.2006 в 14:00.
Теги
aos, ax3.0, download, faq, администрирование, законченный пример

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
daxis: Troubleshooting blocked SPIDS in AOS Blog bot DAX Blogs 0 01.04.2009 18:05
Arijit Basu: AX 4 AOS Basics: [Level 100] Blog bot DAX Blogs 0 18.11.2007 14:30
DynamicsTech: What's New in Dynamics Ax 4.0 AOS? Blog bot DAX Blogs 0 12.04.2007 11:50
axaptapedia: Control AOS from command line Blog bot DAX Blogs 0 09.03.2007 14:50
Топология AOS'ов Sequel DAX: Администрирование 9 03.05.2006 18:37

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:49.