-- ============================================= -- Author: Samuele E. Locatelli -- Create date: 2009-03-04 -- mod date: 2010-07-14 -- -- Description: riallineamento con update massivo dati db -- aggiorna i dati nel db per portarli ad essere "odierni" ovvero ultimo evento appena successo -- ============================================= ALTER PROCEDURE [dbo].[stp_ZZZ_riallineaDateDb] AS DBCC SHOWCONTIG(EventList) DBCC SHOWCONTIG(DiarioDiBordo) EXEC USP_DisableEnableNonClusteredIndexes 'MoonPro',null, 1 --disabilito indici PRINT 'inizio UPDATE tabelle...' DECLARE @lastData AS DATETIME DECLARE @diff_min as INT -- calcolo l'ultima data degli eventi SET @lastData = (SELECT MAX(InizioStato) AS inizio FROM DiarioDiBordo )--WHERE IdxMacchina < 99) -- elimino gli eventi della macchina test DOPO @lastData... DELETE FROM EventList WHERE IdxMacchina = 99 AND InizioStato > @lastData -- elimino da diario di bordo della macchina test DOPO @lastData... DELETE FROM DiarioDiBordo WHERE IdxMacchina = 99 AND InizioStato > @lastData -- elimino da tempi ciclo teorici della macchina test DOPO @lastData... DELETE FROM TempiCicloTeorici WHERE IdxMacchina = 99 AND DataOraFrom > @lastData -- elimino da tempi ciclo rilevati della macchina test DOPO @lastData... DELETE FROM TempiCicloRilevati WHERE IdxMacchina = 99 AND DataOraRif > @lastData -- ora calcolo la differenza tra quello e la data/ora odierna SET @diff_min = (SELECT DATEDIFF(n, @lastData, getdate())) -- aggiorno tabelle di conseguenza modificando le date -- aggiorno EventList UPDATE EventList SET InizioStato = DATEADD(n, @diff_min, InizioStato) -- aggiorno DiarioDiBordo UPDATE DiarioDiBordo SET InizioStato = DATEADD(n, @diff_min, InizioStato),FineStato = DATEADD(n, @diff_min, FineStato) -- aggiorno StatoMacchine UPDATE StatoMacchine SET InizioStato = DATEADD(n, @diff_min, InizioStato) -- aggiorno KeepAlive UPDATE KeepAlive SET DataOraServer = DATEADD(n, @diff_min, DataOraServer), DataOraMacchina = DATEADD(n, @diff_min, DataOraMacchina), DataOraStart = DATEADD(n, @diff_min, DataOraStart) -- aggiorno TC teorici UPDATE TempiCicloTeorici SET DataOraFrom = DATEADD(n, @diff_min, DataOraFrom), DataOraTo = DATEADD(n, @diff_min, DataOraTo) -- aggiorno TC rilevati UPDATE TempiCicloRilevati SET DataOraRif = DATEADD(n, @diff_min, DataOraRif) -- aggiorno Dati confermati UPDATE DatiConfermati SET DataOraApp = DATEADD(n, @diff_min, DataOraApp), DataRif = DATEADD(n, @diff_min, DataRif), DataOraFrom = DATEADD(n, @diff_min, DataOraFrom), DataOraTo = DATEADD(n, @diff_min, DataOraTo) PRINT 'concluso UPDATE tabelle...' DBCC SHOWCONTIG(EventList) DBCC SHOWCONTIG(DiarioDiBordo) EXEC USP_DisableEnableNonClusteredIndexes 'MoonPro',null, 2 --riattivo indici --ricostruisco indici PRINT 'ricostruisco indici...' DBCC DBREINDEX(EventList) DBCC DBREINDEX(DiarioDiBordo) DBCC DBREINDEX(TransizioneIngressi) DBCC DBREINDEX(Kanban2ins) DBCC DBREINDEX(Kanban) DBCC DBREINDEX(AnagraficaOperatori) DBCC DBREINDEX(AnagraficaOperatori2ins) DBCC SHOWCONTIG(EventList) DBCC SHOWCONTIG(DiarioDiBordo) --shrink del db PRINT 'compatto DB...' DBCC SHRINKDATABASE (MoonPro) RETURN /************************************* * STORED PROCEDURE stp_DatiCOnf_getByMacchPeriodo * * recupera i dati confermati x una amcchina e periodo, ordinati in data DESC * * modif.: S.E.L. * il: 2008.08.07 **************************************/ create PROCEDURE dbo.stp_DatiConf_getByMacchPeriodo ( @idxMacchina NVARCHAR(50), @dataFrom DATETIME, @dataTo DATETIME ) AS SELECT * FROM DatiConfermati WHERE IdxMacchina = @idxMacchina AND (DataRif >= @dataFrom AND DataRif <= @dataTo) ORDER BY DataRif DESC RETURN -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(240, GETDATE()) GO