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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.06.2006, 11:51   #9  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Нарыл когда-то на одном из форумов. Ссылка сейчас не работает, но текст есть Убивает SQL-сервером, причем еще и сообшения рассылает. Хоть немного и не корректно выходит: клиентская часть Nav не закрывается автоматом и при обращении к ней выдает ошибку. Но пользователи уже привыкли.

"Отключить спящих (не работающих NN минут ) пользователей NAVISION нам помогает хранимая процедура sp_clear_nav. Параметры, пример запуска - см. прикрепленный файл со скриптом.

CREATE PROCEDURE sp_Clear_NAV (@db_Name varchar(100),@prog_name varchar(100), @timer_min int ) AS
SET NOCOUNT ON
-- Сергеев П.Н. 12/08/04
-- процедура выкидывает из БД с именем @db_Name и приложения @prog_name пользователей,
-- не работающих более @timer_min
-- @db_Name - имя БД
-- @prog_name - имя приложения или часть имени
-- @timer_min - 'простой' приложения в минутах, по истечении которого приложения закрывается
-- exec koltsovo_add_on.dbo.sp_Clear_NAV 'koltsovo', 'navision', 20
declare @spid int
declare @program_name varchar(100)
declare @status varchar(50)
declare @last_batch datetime
declare @host_name varchar(100)
declare @sql varchar(100)
DECLARE @msg varchar(100)
DECLARE @cmd sysname, @var sysname
declare cur_Processes cursor for
select master..sysprocesses.spid, master..sysprocesses.program_name, master..sysprocesses.status, master..sysprocesses.last_batch, master..sysprocesses.hostname
from master..sysprocesses
inner join master..sysdatabases d on master..sysprocesses.dbid = d.dbid
where d.Name=@db_Name and master..sysprocesses.status='sleeping' and charindex(@prog_name,ltrim(master..sysprocesses.program_name) ) > 0
and datediff(n,master..sysprocesses.last_batch, getdate()) > @timer_min
open cur_Processes
fetch next from cur_Processes into @spid, @program_name,@status, @last_batch, @host_name
while @@fetch_status=0
begin
set @sql='kill '+convert(varchar(100), @spid)
-- Приложение navision закрыто, так как Вы не работали более NN минут!
SET @var = @host_name
SET @cmd = 'net send ' + rtrim(convert(varchar(15),@host_name)) + ' Приложение ' + rtrim( convert(varchar(50),@prog_name)) + ' закрыто, так как Вы не работали более ' + rtrim(convert(varchar(10),@timer_min)) + ' мин!'
EXEC master..xp_cmdshell @cmd

exec(@sql)

--print @spid
fetch next from cur_Processes into @spid, @program_name,@status, @last_batch, @host_name
end
close cur_Processes
deallocate cur_Processes"
 


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

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

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