2025-06-25 11:25:55 +02:00

115 lines
4.2 KiB
Transact-SQL

-- Stored procedure
--V Transazione gestita a livello applicativo
CREATE PROCEDURE [dbo].[HIST_DELETEARCHIVIATI] AS
BEGIN
-- Nella tabella temporanea #deleteReport mettiamo tutti i report da cancellare presi dalla tabella generata dalla
-- HIST_getReportDaStoricizzare e caricati su nastro (flagArchiviato = 1)
select * into #deleteRepFisico from appoDaArchiviare where flagArchiviato = 1
declare @ttlStorico as int
set @ttlStorico = 30
--delete dei restorati al passare dei 30 giorni
--DELETE FROM dbo.ReportStorico
--WHERE IDENTIFICATIVO IN
-- (SELECT id
-- from dbo.RepositoryStorico WHERE datediff(dd,caricamentoInStorico,getDate()) > @ttlStorico
-- )
----aggiornamento puntamento tabella metadati
--UPDATE repositoryMetadati
--SET repository = 4
--WHERE repository = 3 and id IN
-- (SELECT id
-- from dbo.RepositoryStorico WHERE datediff(dd,caricamentoInStorico,getDate()) > @ttlStorico
-- )
--Cancellazione report online NON storicizzati --41083 1.57.36 - 1480 0.2.55
--cancellazione com'era prima della fix
--DELETE FROM dbo.ReportFisico
--WHERE IDENTIFICATIVO IN
-- (SELECT IdInRepository
-- FROM repositoryMetadati WHERE flagstoricizzato = 1 and flaglock = 0
-- )
--fix per problema lock/timeout
-- Nuova delete che sostituissce le query 1 e 2
delete rFisico
FROM dbo.ReportFisico rfisico
inner join #deleteRepFisico delRep on delRep.idReport = rfisico.identificativo
and delRep.repository = 0
----aggiornamento tabella metadati, mantengo l'informazione di quali report ho cancellato definitivamente.
update
RepositoryMetadati
set flagStoricizzato = 1
where datediff(day,dataGenerazione,getDate()) > 180
and repository = 0 and flaglock = 0 and flagStoricizzato = 0
-- Query 1
--DELETE FROM dbo.ReportFisico
--WHERE IDENTIFICATIVO IN
-- (SELECT TOP 10000 IdInRepository
-- FROM repositoryMetadati a
-- join reportFisico b
-- on a.idInRepository = b.identificativo
-- WHERE flagstoricizzato = 1 and flaglock = 0 and repository = 0
-- )
/*
WHILE @@ROWCOUNT>0
DELETE FROM dbo.ReportFisico
WHERE IDENTIFICATIVO IN
(SELECT TOP 2000 IdInRepository
FROM repositoryMetadati a
join reportFisico b
on a.idInRepository = b.identificativo
WHERE flagstoricizzato = 1 and flaglock = 0 and repository = 0
)
--fine fix per problema lock/timeout
*/
--Cancellazione report online storicizzati 1232 0.02.30 - 56 0.0.3
---- Query 2
--DELETE FROM dbo.ReportFisico
--WHERE IDENTIFICATIVO IN
-- (
-- SELECT top 10000 IdInRepository
-- FROM repositoryMetadati a
-- join reportFisico b
-- on a.idInRepository = b.identificativo
-- WHERE flagstoricizzato = 1 and repositoryPrestorico = 0 and flaglock = 1
-- )
--Cancellazione report contratto sei
-- Sotituisce query 3
delete rFisico
FROM dbo.C6ReportFisico rfisico
inner join #deleteRepFisico delRep on delRep.idReport = rfisico.identificativo
and delRep.repository = 1
-- Query 3
--Cancellazione report contratto sei
--DELETE FROM dbo.C6ReportFisico --32363 01.03.02 - 387 0.0.42
--WHERE IDENTIFICATIVO IN
-- (SELECT top 10000 IdInRepository--, a.*
-- FROM repositoryMetadati a
-- join C6ReportFisico b
-- on a.idInRepository = b.identificativo
-- WHERE flagstoricizzato = 1 and repositoryPrestorico = 1 and flaglock = 1
-- )
--Cancellazione report contratto sei campagna
-- sostituisce query 4
delete rFisico
FROM dbo.C6ReportFisico rfisico
inner join #deleteRepFisico delRep on delRep.idReport = rfisico.identificativo
and delRep.repository = 2
-- query 4
--Cancellazione report contratto sei campagna
--DELETE FROM dbo.C6ReportFisico_CAMPAGNA
--WHERE IDENTIFICATIVO IN
-- (SELECT IdInRepository
-- FROM repositoryMetadati WHERE flagstoricizzato = 1 and repositoryPrestorico = 2 and flaglock = 1
-- )
--aggiornamento repository tabella dei metadati ------begin transaction rollback
--vengono aggiornati i report a lucchetto aperti cancellati
update repositoryMetadati
set repository = 4
WHERE flagstoricizzato = 1
and repository not in (3,4)
-- Archivio tutti i Report che Sono stati archiviati
insert into dbo.ReportArchiviati
Select *, getDate()
from #deleteRepFisico
--- 08/10/2015-- Ho terminato il processo di cancellazione e ora posso svuotare la tabella di Selezione Report da archiviare
truncate table appoDaArchiviare
END