Files
Samuele E. Locatelli 2b1479f315 spostamento update SQL
2018-05-03 15:06:47 +02:00

125 lines
3.7 KiB
Transact-SQL

-- =============================================
-- 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