![]() |
#9 |
Участник
|
Нарыл когда-то на одном из форумов. Ссылка сейчас не работает, но текст есть
![]() "Отключить спящих (не работающих 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" |
|