Skip Navigation Links Skip Navigation Links.
Skip Navigation Links Skip Navigation Links.


48211 - AM - Licence - při odebrání licence počítači dojde k odstranění položky licence

Článek se týká verzí produktů

ALVAO Asset Management 7.1, 7.1 SP1, 8.0, 8.0 SP1

Příznaky

Pokud je v položce přidělené licence zapsán dodatečný údaj (např. nákladové středisko odlišné od nákladového střediska licence, poznámka, aktivační klíč apod.), při odebrání licence počítači dojde k odstranění i takové položky licence a tím pádem k možné ztrátě dat.

Příčina

Příčinou je chyba v produktech ALVAO.

Řešení

Opraveno ve verzi 8.0.3005

Náhradní řešení

  • ALVAO Asset Management 8.0 a 7.1 (včetně SP): Odebírejte licence počítačům pomocí ručního odebrání počítače z položky licence.
  • ALVAO Asset Management 8.0 SP1: Pro opravu chyby spusťte na databázi následující skript (např. v SQL Server Management Studiu):
  • alter procedure dbo.spTakeLicence @LicHistItemId int as
    begin
    	set nocount on
    
    	if( not exists(select 1 from tblLicHistItem where intLicHistItemId=@LicHistItemId) )
    	begin
    		declare @err nvarchar(255)
    		set @err = 'spTakeLicence: Licence item ID ''' + cast(@LicHistItemId as nvarchar(32)) + ''' not exist!'
    		raiserror(@err,16,1)
    		return
    	end
    
    	declare @c int
    	set @c=0
    
    	create table #t (id int, itemId int, c int, rem bit)
    	insert into #t (id, itemId, c, rem)
    	select 
    		lintLicHistId, 
    		intLicHistItemId, 
    		@c,
    		case when 
    			isnull(lh.txtActivationKey,'')=isnull(lhi.ActivationKey,'') and
    			isnull(lh.txtDepartment,'')=isnull(lhi.txtDepartment,'') and
    			isnull(lhi.txtInventoryNum,'')!='' and
    			isnull(lhi.txtRequest,'')!='' and 
    			isnull(lhi.txtMemo,'')!=''
    			then 1 else 0 end
    	from tblLicHistItem lhi
    		join tblLicHist lh on lh.intLicHistId=lhi.lintLicHistId
    	where intLicHistItemId=@LicHistItemId
    	
    	
    	while( exists(select * from #t where c=@c) )
    	begin
    		insert into #t (id,itemId,c,rem)
    		select
    			previ.lintLicHistId, 
    			previ.intLicHistItemId, 
    			@c+1,
    			case when isnull(previ.ActivationKey,'')=isnull(prevlh.txtActivationKey,'')
    				and isnull(previ.txtDepartment,'')=isnull(prevlh.txtDepartment,'')
    				and isnull(previ.txtInventoryNum,'')=''
    				and isnull(previ.txtRequest,'')='' 
    				and isnull(cast(previ.txtMemo as nvarchar(255)),'')='' then 1 else 0 end
    		from #t curr 
    			join tblLicHistItem curri on curri.intLicHistItemId=curr.itemId
    			join tblLicHistItem previ on previ.intLicHistItemId=curri.UpgradedFromLicHistItemId and previ.lintLicHistId not in (select id from #t)
    			join tblLicHist prevlh on prevlh.intLicHistId=previ.lintLicHistId
    		
    		set @c = @c+1
    	end
    
    	
    	update LicHistItemAssign set LicHistItemId=null 
    	where LicHistItemId in (select itemId from #t)
    
    	
    	set @c = 0
    	while(exists(select 1 from #t where c=@c))
    	begin
    		delete from tblLicHistItem 
    		where intLicHistItemId in (select itemId from #t where rem=1 and c=@c)
    		set @c = @c+1
    	end
    
    	
    	update tblLicHistItem set NodeId=null
    	where intLicHistItemId in (select itemId from #t where rem=0)
    
    	drop table #t
    end
    	

 

Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.