USE [master] GO /****** Object: Database [CMS-OMR] Script Date: 11/12/2018 18:21:48 ******/ CREATE DATABASE [CMS-OMR] CONTAINMENT = NONE ON PRIMARY ( NAME = N'CMS-OMR', FILENAME = N'G:\SQL2016Data\CMS-OMR.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) LOG ON ( NAME = N'CMS-OMR_log', FILENAME = N'F:\SQL2016Log\CMS-OMR_log.ldf' , SIZE = 73728KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [CMS-OMR] SET COMPATIBILITY_LEVEL = 110 GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [CMS-OMR].[dbo].[sp_fulltext_database] @action = 'enable' end GO ALTER DATABASE [CMS-OMR] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [CMS-OMR] SET ANSI_NULLS OFF GO ALTER DATABASE [CMS-OMR] SET ANSI_PADDING OFF GO ALTER DATABASE [CMS-OMR] SET ANSI_WARNINGS OFF GO ALTER DATABASE [CMS-OMR] SET ARITHABORT OFF GO ALTER DATABASE [CMS-OMR] SET AUTO_CLOSE OFF GO ALTER DATABASE [CMS-OMR] SET AUTO_SHRINK OFF GO ALTER DATABASE [CMS-OMR] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [CMS-OMR] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [CMS-OMR] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [CMS-OMR] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [CMS-OMR] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [CMS-OMR] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [CMS-OMR] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [CMS-OMR] SET DISABLE_BROKER GO ALTER DATABASE [CMS-OMR] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [CMS-OMR] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [CMS-OMR] SET TRUSTWORTHY OFF GO ALTER DATABASE [CMS-OMR] SET ALLOW_SNAPSHOT_ISOLATION OFF GO ALTER DATABASE [CMS-OMR] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [CMS-OMR] SET READ_COMMITTED_SNAPSHOT OFF GO ALTER DATABASE [CMS-OMR] SET HONOR_BROKER_PRIORITY OFF GO ALTER DATABASE [CMS-OMR] SET RECOVERY FULL GO ALTER DATABASE [CMS-OMR] SET MULTI_USER GO ALTER DATABASE [CMS-OMR] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [CMS-OMR] SET DB_CHAINING OFF GO ALTER DATABASE [CMS-OMR] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) GO ALTER DATABASE [CMS-OMR] SET TARGET_RECOVERY_TIME = 60 SECONDS GO ALTER DATABASE [CMS-OMR] SET DELAYED_DURABILITY = DISABLED GO EXEC sys.sp_db_vardecimal_storage_format N'CMS-OMR', N'ON' GO ALTER DATABASE [CMS-OMR] SET QUERY_STORE = OFF GO USE [CMS-OMR] GO ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = OFF; GO ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET LEGACY_CARDINALITY_ESTIMATION = PRIMARY; GO ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 0; GO ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET MAXDOP = PRIMARY; GO ALTER DATABASE SCOPED CONFIGURATION SET PARAMETER_SNIFFING = ON; GO ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET PARAMETER_SNIFFING = PRIMARY; GO ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES = OFF; GO ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET QUERY_OPTIMIZER_HOTFIXES = PRIMARY; GO USE [CMS-OMR] GO /****** Object: User [conn_CMS] Script Date: 11/12/2018 18:21:48 ******/ CREATE USER [conn_CMS] FOR LOGIN [conn_CMS] WITH DEFAULT_SCHEMA=[dbo] GO ALTER ROLE [db_owner] ADD MEMBER [conn_CMS] GO ALTER ROLE [db_accessadmin] ADD MEMBER [conn_CMS] GO ALTER ROLE [db_ddladmin] ADD MEMBER [conn_CMS] GO ALTER ROLE [db_datareader] ADD MEMBER [conn_CMS] GO ALTER ROLE [db_datawriter] ADD MEMBER [conn_CMS] GO /****** Object: UserDefinedFunction [dbo].[f_padLeft] Script Date: 11/12/2018 18:21:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /*************************************** * FUNCTION f_padLeft * * fornisce una stringa della lunghezza desiderata aggiungendo a sx il carattere richiesto alla @string originale * * Steamware, S.E.L. * mod: 2010.03.19 * ****************************************/ CREATE FUNCTION [dbo].[f_padLeft] (@string VARCHAR(255), @desired_length INTEGER, @pad_character CHAR(1)) RETURNS VARCHAR(255) AS BEGIN -- Prefix the required number of spaces to bulk up the string and then replace the spaces with the desired character RETURN CASE WHEN LEN(@string) < @desired_length THEN REPLACE(SPACE(@desired_length - LEN(@string)), ' ', @pad_character) + @string ELSE @string END END GO /****** Object: Table [dbo].[AnagAllarmi] Script Date: 11/12/2018 18:21:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AnagAllarmi]( [CodAllarme] [nvarchar](50) NOT NULL, [Descrizione] [nvarchar](250) NOT NULL, [ReportAttivo] [bit] NOT NULL, [LastStart] [datetime] NOT NULL, [LastEnd] [datetime] NOT NULL, [CurrStatus] [bit] NOT NULL, CONSTRAINT [PK_AnagAllarmi] PRIMARY KEY CLUSTERED ( [CodAllarme] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[StoricoAllarmi] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[StoricoAllarmi]( [DtEvento] [datetime] NOT NULL, [CodAllarme] [nvarchar](50) NOT NULL, [Attivo] [bit] NOT NULL, CONSTRAINT [PK_StoricoAllarmi] PRIMARY KEY CLUSTERED ( [DtEvento] ASC, [CodAllarme] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [dbo].[vStoricoAllarmiExp] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[vStoricoAllarmiExp] AS SELECT dbo.StoricoAllarmi.*, dbo.AnagAllarmi.Descrizione FROM dbo.AnagAllarmi INNER JOIN dbo.StoricoAllarmi ON dbo.AnagAllarmi.CodAllarme = dbo.StoricoAllarmi.CodAllarme GO /****** Object: UserDefinedFunction [dbo].[SplitStrings] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.09 -- Description: Splitter stringhe -- rif https://sqlperformance.com/2012/07/t-sql-queries/split-strings -- ============================================= CREATE FUNCTION [dbo].[SplitStrings] ( @List NVARCHAR(MAX), @Delimiter NVARCHAR(255) ) RETURNS TABLE WITH SCHEMABINDING AS RETURN WITH E1(N) AS ( SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1), E2(N) AS (SELECT 1 FROM E1 a, E1 b), E4(N) AS (SELECT 1 FROM E2 a, E2 b), E42(N) AS (SELECT 1 FROM E4 a, E2 b), cteTally(N) AS (SELECT 0 UNION ALL SELECT TOP (DATALENGTH(ISNULL(@List,1))) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM E42), cteStart(N1) AS (SELECT t.N+1 FROM cteTally t WHERE (SUBSTRING(@List,t.N,1) = @Delimiter OR t.N = 0)) SELECT Item = SUBSTRING(@List, s.N1, ISNULL(NULLIF(CHARINDEX(@Delimiter,@List,s.N1),0)-s.N1,8000)) FROM cteStart s; GO /****** Object: Table [dbo].[AnagArticoli] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AnagArticoli]( [CodArt] [nvarchar](50) NOT NULL, [Descrizione] [nvarchar](250) NOT NULL, CONSTRAINT [PK_AnagArticoli] PRIMARY KEY CLUSTERED ( [CodArt] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[AnagOperatori] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AnagOperatori]( [Barcode] [nvarchar](50) NOT NULL, [Cognome] [nvarchar](50) NOT NULL, [Nome] [nvarchar](50) NOT NULL, [Password] [nvarchar](50) NOT NULL, [Livello] [nvarchar](50) NOT NULL, CONSTRAINT [PK_AnagOperatori] PRIMARY KEY CLUSTERED ( [Barcode] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[TabAttrezzature] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TabAttrezzature]( [CodAttr] [nvarchar](50) NOT NULL, [CodArt_A] [nvarchar](50) NOT NULL, [CodArt_B] [nvarchar](50) NOT NULL, [PartProgMain] [nvarchar](250) NOT NULL, [PartProgAux] [nvarchar](250) NOT NULL, CONSTRAINT [PK_TabAttrezzature] PRIMARY KEY CLUSTERED ( [CodAttr] ASC, [CodArt_A] ASC, [CodArt_B] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[TabOperazioni] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TabOperazioni]( [IdxRec] [int] IDENTITY(1,1) NOT NULL, [DtEvento] [datetime] NOT NULL, [CodStazione] [nvarchar](50) NOT NULL, [CodSottostaz] [nvarchar](50) NOT NULL, [CodOperaz] [nvarchar](50) NOT NULL, [CodStato] [nvarchar](50) NOT NULL, [Datamatrix] [nvarchar](50) NOT NULL, CONSTRAINT [PK_TabOperazioni] PRIMARY KEY CLUSTERED ( [IdxRec] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[TabPezzi] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TabPezzi]( [Datamatrix] [nvarchar](50) NOT NULL, [CodArt] [nvarchar](50) NOT NULL, [CodStazione] [nvarchar](50) NOT NULL, [CodStato] [nvarchar](50) NOT NULL, [CodOperazDone] [nvarchar](50) NOT NULL, [CodOperazCurr] [nvarchar](50) NOT NULL, CONSTRAINT [PK_TabPezzi] PRIMARY KEY CLUSTERED ( [Datamatrix] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AnagAllarmi] ADD CONSTRAINT [DF_AnagAllarmi_Descrizione] DEFAULT ('') FOR [Descrizione] GO ALTER TABLE [dbo].[AnagAllarmi] ADD CONSTRAINT [DF_AnagAllarmi_Attivo] DEFAULT ((1)) FOR [ReportAttivo] GO ALTER TABLE [dbo].[AnagAllarmi] ADD CONSTRAINT [DF_AnagAllarmi_LastStart] DEFAULT (getdate()) FOR [LastStart] GO ALTER TABLE [dbo].[AnagAllarmi] ADD CONSTRAINT [DF_AnagAllarmi_LastEnd] DEFAULT (getdate()) FOR [LastEnd] GO ALTER TABLE [dbo].[AnagAllarmi] ADD CONSTRAINT [DF_AnagAllarmi_CurrStatus] DEFAULT ((0)) FOR [CurrStatus] GO ALTER TABLE [dbo].[AnagArticoli] ADD CONSTRAINT [DF_AnagArticoli_CodPartProgram] DEFAULT ('') FOR [Descrizione] GO ALTER TABLE [dbo].[AnagOperatori] ADD CONSTRAINT [DF_AnagOperatori_Cognome] DEFAULT (N'Cognome') FOR [Cognome] GO ALTER TABLE [dbo].[AnagOperatori] ADD CONSTRAINT [DF_AnagOperatori_Nome] DEFAULT (N'Nome') FOR [Nome] GO ALTER TABLE [dbo].[AnagOperatori] ADD CONSTRAINT [DF_AnagOperatori_Nome1] DEFAULT (N'------') FOR [Password] GO ALTER TABLE [dbo].[AnagOperatori] ADD CONSTRAINT [DF_AnagOperatori_Nome1_1] DEFAULT (N'Base') FOR [Livello] GO ALTER TABLE [dbo].[StoricoAllarmi] ADD CONSTRAINT [DF_StoricoAllarmi_Attivo] DEFAULT ((1)) FOR [Attivo] GO ALTER TABLE [dbo].[TabAttrezzature] ADD CONSTRAINT [DF_TabAttrezzature_CodArt_A1_1] DEFAULT (N'ND') FOR [CodAttr] GO ALTER TABLE [dbo].[TabAttrezzature] ADD CONSTRAINT [DF_TabAttrezzature_CodArt_A] DEFAULT (N'ONLY') FOR [CodArt_A] GO ALTER TABLE [dbo].[TabAttrezzature] ADD CONSTRAINT [DF_TabAttrezzature_CodArt_A1] DEFAULT (N'ONLY') FOR [CodArt_B] GO ALTER TABLE [dbo].[TabAttrezzature] ADD CONSTRAINT [DF_TabAttrezzature_PartProgMain] DEFAULT ('') FOR [PartProgMain] GO ALTER TABLE [dbo].[TabAttrezzature] ADD CONSTRAINT [DF_TabAttrezzature_PartProgAux] DEFAULT ('') FOR [PartProgAux] GO ALTER TABLE [dbo].[TabOperazioni] ADD CONSTRAINT [DF_TabOperazioni_DtOpr] DEFAULT (getdate()) FOR [DtEvento] GO ALTER TABLE [dbo].[TabOperazioni] ADD CONSTRAINT [DF_TabOperazioni_CodStazione] DEFAULT ('') FOR [CodStazione] GO ALTER TABLE [dbo].[TabOperazioni] ADD CONSTRAINT [DF_TabOperazioni_CodSottostaz] DEFAULT ('') FOR [CodSottostaz] GO ALTER TABLE [dbo].[TabOperazioni] ADD CONSTRAINT [DF_TabOperazioni_CodOperaz] DEFAULT ('') FOR [CodOperaz] GO ALTER TABLE [dbo].[TabOperazioni] ADD CONSTRAINT [DF_TabOperazioni_IdxStato] DEFAULT ('') FOR [CodStato] GO ALTER TABLE [dbo].[TabOperazioni] ADD CONSTRAINT [DF_TabOperazioni_Datamatrix] DEFAULT ('') FOR [Datamatrix] GO ALTER TABLE [dbo].[TabPezzi] ADD CONSTRAINT [DF_TabPezzi_Datamatrix] DEFAULT ('') FOR [Datamatrix] GO ALTER TABLE [dbo].[TabPezzi] ADD CONSTRAINT [DF_TabPezzi_CodArt] DEFAULT ('') FOR [CodArt] GO ALTER TABLE [dbo].[TabPezzi] ADD CONSTRAINT [DF_TabPezzi_CodStazione] DEFAULT ('') FOR [CodStazione] GO ALTER TABLE [dbo].[TabPezzi] ADD CONSTRAINT [DF_TabPezzi_CodStato] DEFAULT ('') FOR [CodStato] GO ALTER TABLE [dbo].[TabPezzi] ADD CONSTRAINT [DF_TabPezzi_CodOperazDone] DEFAULT ('') FOR [CodOperazDone] GO ALTER TABLE [dbo].[TabPezzi] ADD CONSTRAINT [DF_TabPezzi_CodOperazCurr] DEFAULT ('') FOR [CodOperazCurr] GO ALTER TABLE [dbo].[StoricoAllarmi] WITH CHECK ADD CONSTRAINT [FK_StoricoAllarmi_AnagAllarmi] FOREIGN KEY([CodAllarme]) REFERENCES [dbo].[AnagAllarmi] ([CodAllarme]) ON UPDATE CASCADE GO ALTER TABLE [dbo].[StoricoAllarmi] CHECK CONSTRAINT [FK_StoricoAllarmi_AnagAllarmi] GO ALTER TABLE [dbo].[TabOperazioni] WITH CHECK ADD CONSTRAINT [FK_TabOperazioni_TabPezzi1] FOREIGN KEY([Datamatrix]) REFERENCES [dbo].[TabPezzi] ([Datamatrix]) ON UPDATE CASCADE GO ALTER TABLE [dbo].[TabOperazioni] CHECK CONSTRAINT [FK_TabOperazioni_TabPezzi1] GO ALTER TABLE [dbo].[TabPezzi] WITH CHECK ADD CONSTRAINT [FK_TabPezzi_AnagArticoli] FOREIGN KEY([CodArt]) REFERENCES [dbo].[AnagArticoli] ([CodArt]) ON UPDATE CASCADE GO ALTER TABLE [dbo].[TabPezzi] CHECK CONSTRAINT [FK_TabPezzi_AnagArticoli] GO /****** Object: StoredProcedure [dbo].[stp_Allarmi_checkStatus] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.10.15 -- Description: Verifica stringa Allarmi attivi (delta) -- e processa di conseguenza registrando history -- ============================================= CREATE PROCEDURE [dbo].[stp_Allarmi_checkStatus] ( @charSep CHAR(1) -- separatore elenco, default è "," ,@alarmList NVARCHAR(MAX) -- elenco allarmi attivi con separatore indicato ) AS BEGIN BEGIN tran SET NOCOUNT ON; DECLARE @adesso DATETIME = GETDATE() -- splitta elenco allarmi da stringa + separatore e salva in temp table... SELECT * INTO #CurrAlarm FROM ( SELECT * FROM dbo.SplitStrings(@alarmList,@charSep) ---- vers sql2016 --SELECT value FROM STRING_SPLIT(@alarmList, @charSep) ) as tblStatus --SELECT * from #CurrAlarm -- per PRIMA COSA inserisco EVENTUALI NUOVI allarmi mai visti... ;WITH cte2Ins AS ( -- allarmi padded a 8 char SELECT dbo.f_padLeft(CAl.Item, 9, '0') AS CodAllarme, 'ND' AS Descrizione, 1 as ReportAttivo, '1900-01-01' AS LastStart, '1900-01-01' AS LastEnd, 0 CurrStatus FROM AnagAllarmi AS AAl RIGHT OUTER JOIN #CurrAlarm CAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(CAl.Item, 9, '0') WHERE AAl.CodAllarme IS NULL ) INSERT INTO AnagAllarmi SELECT * FROM cte2Ins -- effettua check tra allarmi attivi e nuova lista, --> registro allarmi cessati SELECT * INTO #NewAlarms FROM ( -- allarmi padded a 8 char SELECT *, 'NEW' as stato FROM AnagAllarmi AAl --INNER JOIN #CurrAlarm CAl ON AAl.CodAllarme = CAl.value INNER JOIN #CurrAlarm CAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(CAl.Item, 9, '0') WHERE AAl.ReportAttivo = 1 AND AAl.CurrStatus = 0 ) as tblNewAarms -- effettua check tra allarmi attivi e nuova lista, --> registro allarmi NUOVI SELECT * INTO #CeasedAlarms FROM ( SELECT *, 'CEASED' as stato FROM AnagAllarmi AAl --LEFT OUTER JOIN #CurrAlarm CAl ON AAl.CodAllarme = CAl.value LEFT OUTER JOIN #CurrAlarm CAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(CAl.Item, 9, '0') WHERE AAl.ReportAttivo = 1 AND AAl.CurrStatus = 1 --AND CAl.value IS NULL AND CAl.Item IS NULL ) as tblCeasedAlarms ---------------------------------- -- processo allarmi NUOVI ---------------------------------- -- ora aggiorno in anagrafica UPDATE AnagAllarmi SET CurrStatus = 1 ,LastStart = @adesso from AnagAllarmi AAl INNER JOIN #NewAlarms nAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(nAl.CodAllarme, 9, '0') -- riporto in history... INSERT INTO StoricoAllarmi(DtEvento, CodAllarme, Attivo) SELECT @adesso, CodAllarme, 1 FROM #NewAlarms ---------------------------------- -- processo allarmi CESSATI ---------------------------------- -- ora aggiorno in anagrafica UPDATE AnagAllarmi SET CurrStatus = 0 ,LastEnd = @adesso from AnagAllarmi AAl INNER JOIN #CeasedAlarms nAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(nAl.CodAllarme, 9, '0') -- riporto in history... INSERT INTO StoricoAllarmi(DtEvento, CodAllarme, Attivo) SELECT @adesso, CodAllarme, 0 FROM #CeasedAlarms COMMIT tran END -- UPDATE update AnagAllarmi set CodAllarme = dbo.f_padLeft(CodAllarme, 9, '0') select * from AnagAllarmi GO /****** Object: StoredProcedure [dbo].[stp_Allarmi_getLast] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.10.15 -- Description: Recupera ultimi record dallo storico allarmi -- ============================================= CREATE PROCEDURE [dbo].[stp_Allarmi_getLast] ( @maxNum INT = 100 -- default mostra 100 records ) AS BEGIN SET NOCOUNT ON; SELECT TOP (@maxNum) * FROM vStoricoAllarmiExp ORDER BY DtEvento DESC END GO /****** Object: StoredProcedure [dbo].[stp_AnagArt_deleteQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.05 -- Description: elimina articolo (e programmi) -- ============================================= create PROCEDURE [dbo].[stp_AnagArt_deleteQuery] ( @CodArt NVARCHAR(50) = '' -- Codice Articolo ) AS BEGIN SET NOCOUNT ON; DELETE FROM AnagArticoli WHERE CodArt = @CodArt END GO /****** Object: StoredProcedure [dbo].[stp_AnagArt_insertQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.05 -- Description: inserisce articolo (e programmi) -- ============================================= CREATE PROCEDURE [dbo].[stp_AnagArt_insertQuery] ( @CodArt NVARCHAR(50) = '' -- Codice Articolo ,@Descrizione NVARCHAR(250) = '' ) AS BEGIN SET NOCOUNT ON; INSERT INTO AnagArticoli(CodArt, Descrizione) VALUES(@CodArt, @Descrizione) END GO /****** Object: StoredProcedure [dbo].[stp_AnagArt_search] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.05 -- Description: cerca articolo (e programmi) -- ============================================= CREATE PROCEDURE [dbo].[stp_AnagArt_search] ( @CodArt NVARCHAR(50) = '' -- Codice Articolo ) AS BEGIN SET NOCOUNT ON; SELECT * FROM AnagArticoli WHERE CodArt = @CodArt END GO /****** Object: StoredProcedure [dbo].[stp_AnagArt_updateQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.05 -- Description: update articolo (e programmi) -- ============================================= CREATE PROCEDURE [dbo].[stp_AnagArt_updateQuery] ( @Original_CodArt NVARCHAR(50) = '' ,@CodArt NVARCHAR(50) = '' ,@Descrizione NVARCHAR(250) = '' ) AS BEGIN SET NOCOUNT ON; UPDATE AnagArticoli SET CodArt = @CodArt ,Descrizione = @Descrizione WHERE CodArt = @Original_CodArt END GO /****** Object: StoredProcedure [dbo].[stp_AnagOpr_deleteQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.05 -- Description: delete operatore -- ============================================= create PROCEDURE [dbo].[stp_AnagOpr_deleteQuery] ( @Barcode NVARCHAR(50) = '' ) AS BEGIN SET NOCOUNT ON; DELETE FROM AnagOperatori WHERE Barcode = @Barcode END GO /****** Object: StoredProcedure [dbo].[stp_AnagOpr_insertQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.05 -- Description: insert operatore -- ============================================= CREATE PROCEDURE [dbo].[stp_AnagOpr_insertQuery] ( @Barcode NVARCHAR(50) = '' ,@Cognome NVARCHAR(50) = '' ,@Nome NVARCHAR(50) = '' ,@Password NVARCHAR(50) = '' ,@Livello NVARCHAR(50) = '' ) AS BEGIN SET NOCOUNT ON; INSERT INTO AnagOperatori(Barcode, Cognome, Nome, [Password], Livello) VALUES (@Barcode, @Cognome, @Nome, @Password, @Livello) END GO /****** Object: StoredProcedure [dbo].[stp_AnagOpr_search] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.05 -- Description: cerca operatore -- ============================================= create PROCEDURE [dbo].[stp_AnagOpr_search] ( @Barcode NVARCHAR(50) = '' ) AS BEGIN SET NOCOUNT ON; SELECT * FROM AnagOperatori WHERE Barcode = @Barcode END GO /****** Object: StoredProcedure [dbo].[stp_AnagOpr_updateQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.11.05 -- Description: update operatore -- ============================================= CREATE PROCEDURE [dbo].[stp_AnagOpr_updateQuery] ( @Original_Barcode NVARCHAR(50) = '' ,@Barcode NVARCHAR(50) = '' ,@Cognome NVARCHAR(50) = '' ,@Nome NVARCHAR(50) = '' ,@Password NVARCHAR(50) = '' ,@Livello NVARCHAR(50) = '' ) AS BEGIN SET NOCOUNT ON; UPDATE AnagOperatori SET Barcode = @Barcode ,Cognome = @Cognome ,Nome = @Nome ,[Password] = @Password ,Livello = @Livello WHERE Barcode = @Original_Barcode END GO /****** Object: StoredProcedure [dbo].[stp_TabAttr_deleteQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.12.11 -- Description: elimino riga tabella attrezzature (e programmi) -- ============================================= create PROCEDURE [dbo].[stp_TabAttr_deleteQuery] ( @CodAttr NVARCHAR(50) = '' -- Codice Attrezzatura ,@CodArt_A NVARCHAR(50) = '' -- Codice Articolo A ('*' per tutti, ONLY per "solo altro") ,@CodArt_B NVARCHAR(50) = '' -- Codice Articolo B ('*' per tutti, ONLY per "solo altro") ) AS BEGIN SET NOCOUNT ON; DELETE FROM TabAttrezzature WHERE CodAttr = @CodAttr AND CodArt_A = @CodArt_A AND CodArt_B = @CodArt_B END GO /****** Object: StoredProcedure [dbo].[stp_TabAttr_insertQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.12.11 -- Description: insert riga tabella attrezzature (e programmi) -- ============================================= create PROCEDURE [dbo].[stp_TabAttr_insertQuery] ( @CodAttr NVARCHAR(50) = '' -- Codice Attrezzatura ,@CodArt_A NVARCHAR(50) = '' -- Codice Articolo A ,@CodArt_B NVARCHAR(50) = '' -- Codice Articolo B ,@PartProgMain NVARCHAR(250) = '' -- PartProgram principale ,@PartProgAux NVARCHAR(250) = '' -- PartProgram ausiliario ) AS BEGIN SET NOCOUNT ON; INSERT INTO TabAttrezzature(CodAttr, CodArt_A, CodArt_B, PartProgMain, PartProgAux) VALUES(@CodAttr, @CodArt_A, @CodArt_B, @PartProgMain, @PartProgAux) END GO /****** Object: StoredProcedure [dbo].[stp_TabAttr_search] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.12.11 -- Description: cerca tabella attrezzature (e programmi) -- ============================================= create PROCEDURE [dbo].[stp_TabAttr_search] ( @CodAttr NVARCHAR(50) = '' -- Codice Attrezzatura ,@CodArt_A NVARCHAR(50) = '' -- Codice Articolo A ('*' per tutti, ONLY per "solo altro") ,@CodArt_B NVARCHAR(50) = '' -- Codice Articolo B ('*' per tutti, ONLY per "solo altro") ) AS BEGIN SET NOCOUNT ON; SELECT * FROM TabAttrezzature WHERE CodAttr = @CodAttr AND ((CodArt_A = @CodArt_A) OR @CodArt_A = '*') AND ((CodArt_B = @CodArt_B) OR @CodArt_B = '*') END GO /****** Object: StoredProcedure [dbo].[stp_TabAttr_updateQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.12.11 -- Description: insert riga tabella attrezzature (e programmi) -- ============================================= create PROCEDURE [dbo].[stp_TabAttr_updateQuery] ( @Original_CodAttr NVARCHAR(50) = '' ,@CodAttr NVARCHAR(50) = '' -- Codice Attrezzatura ,@CodArt_A NVARCHAR(50) = '' -- Codice Articolo A ,@CodArt_B NVARCHAR(50) = '' -- Codice Articolo B ,@PartProgMain NVARCHAR(250) = '' -- PartProgram principale ,@PartProgAux NVARCHAR(250) = '' -- PartProgram ausiliario ) AS BEGIN SET NOCOUNT ON; UPDATE TabAttrezzature SET CodAttr = @CodAttr ,CodArt_A = @CodArt_A ,CodArt_B = @CodArt_B ,PartProgMain = @PartProgMain ,PartProgAux = @PartProgAux WHERE CodAttr = @Original_CodAttr END GO /****** Object: StoredProcedure [dbo].[stp_TabOpr_deleteAll] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.10.15 -- Description: Effettua uno svuotamento completo della tab operazioni -- ============================================= CREATE PROCEDURE [dbo].[stp_TabOpr_deleteAll] ( @authKey NVARCHAR(50) = '' -- chiave x verifica auth a cancellare... ) AS BEGIN BEGIN tran SET NOCOUNT ON; -- verifico comando IF(@authKey ='digheDelBu') BEGIN TRUNCATE TABLE TabOperazioni TRUNCATE TABLE StoricoAllarmi DELETE FROM TabPezzi --TRUNCATE TABLE TabPezzi END COMMIT tran END GO /****** Object: StoredProcedure [dbo].[stp_TabOpr_getLast] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.10.15 -- Description: Recupera elenco ultimi record inseriti in TabOperazioni -- ============================================= CREATE PROCEDURE [dbo].[stp_TabOpr_getLast] ( @maxNum INT = 100 -- default mostra 100 records ) AS BEGIN SET NOCOUNT ON; SELECT TOP (@maxNum) * FROM TabOperazioni ORDER BY DtEvento DESC END GO /****** Object: StoredProcedure [dbo].[stp_TabOpr_insertQuery] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.10.15 -- Description: Effettua registrazione di un operazione su un pezzo: -- - SE NON CI FOSSE CREA nuovo pezzo -- - registra nuova riga operazione -- - effettua eventuale update riga PEZZO -- ============================================= CREATE PROCEDURE [dbo].[stp_TabOpr_insertQuery] ( @Datamatrix NVARCHAR(50) = '' -- identificativo telaio letto ,@CodArt NVARCHAR(50) = '' -- Codice Articolo ,@CodStazione NVARCHAR(50) = '' -- codice della stazione ,@CodSottostaz NVARCHAR(50) = '' -- codice della sottostazione ,@CodOperaz NVARCHAR(50) = '' -- codice dell'operazione ,@CodStato NVARCHAR(50) = '' -- codice dello stato dell'attivita ) AS BEGIN BEGIN tran SET NOCOUNT ON; -- variabili DECLARE @Fatto INT = 0 DECLARE @Trovati INT = 0 DECLARE @IdxPezzo INT = 0 DECLARE @CodOperazDone NVARCHAR(50) = '' -- verifico se ci sia articolo (sennò MI FERMO...) SELECT @Trovati = COUNT(*) FROM AnagArticoli WHERE CodArt = @CodArt IF(@Trovati = 1) BEGIN -- verifico se ci sia già il pezzo SELECT @Trovati = COUNT(*) FROM TabPezzi WHERE Datamatrix = @Datamatrix -- recupero ULTIMA operazione (se c'è) SELECT @CodOperazDone = ISNULL(CodOperazCurr,'') FROM TabPezzi WHERE Datamatrix = @Datamatrix -- verifico IN PRIMIS se va creato nuovo record con quel datamatrix IF(@Trovati = 0) BEGIN INSERT INTO TabPezzi (Datamatrix, CodArt, CodStazione, CodStato) VALUES (@Datamatrix, @CodArt, @CodStazione, @CodStato) END -- registro operazione INSERT INTO TabOperazioni (CodStazione, CodSottostaz, CodOperaz, CodStato, Datamatrix) VALUES (@CodStazione, @CodSottostaz, @CodOperaz, @CodStato, @Datamatrix) -- aggiorno record pezzo UPDATE TabPezzi SET CodStazione = @CodStazione ,CodStato = @CodStato ,CodOperazDone = @CodOperazDone ,CodOperazCurr = @CodOperaz WHERE Datamatrix = @Datamatrix -- indico che ho fatto (>0) SELECT @Fatto = 1 END -- retitusico risultato SELECT @Fatto as fatto COMMIT tran END GO /****** Object: StoredProcedure [dbo].[stp_TabOpr_purgeOld] Script Date: 11/12/2018 18:21:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2018.10.15 -- Description: Effettua uno svecchiamento della tab operazioni -- ============================================= create PROCEDURE [dbo].[stp_TabOpr_purgeOld] ( @days2keep INT = 365 -- default tiene ultimi 365gg ) AS BEGIN BEGIN tran SET NOCOUNT ON; -- variabili DECLARE @Fatto INT = 0 -- normalizzo valore come > 0 IF(@days2keep < 0) SELECT @days2keep = -@days2keep -- elimina dati OPR piu vecchi dei gg indicati DELETE FROM TabOperazioni WHERE DtEvento < DATEADD(DAY, -@days2keep, GETDATE()) -- indico che ho fatto (>0) SELECT @Fatto = 1 -- retitusico risultato SELECT @Fatto as fatto COMMIT tran END GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Attivo per reporting in storico' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AnagAllarmi', @level2type=N'COLUMN',@level2name=N'ReportAttivo' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Codice Datamatrix' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TabOperazioni', @level2type=N'COLUMN',@level2name=N'Datamatrix' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Codice Datamatrix' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TabPezzi', @level2type=N'COLUMN',@level2name=N'Datamatrix' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Cod Articolo (prime 11 cifre del datamatrix, numDisegno)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TabPezzi', @level2type=N'COLUMN',@level2name=N'CodArt' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Stazione ultimo aggiornamento' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TabPezzi', @level2type=N'COLUMN',@level2name=N'CodStazione' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ultima fase eseguita' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TabPezzi', @level2type=N'COLUMN',@level2name=N'CodOperazDone' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Fase in esecuzione' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TabPezzi', @level2type=N'COLUMN',@level2name=N'CodOperazCurr' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "AnagAllarmi" Begin Extent = Top = 6 Left = 38 Bottom = 178 Right = 208 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "StoricoAllarmi" Begin Extent = Top = 5 Left = 295 Bottom = 123 Right = 465 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End Begin ColumnWidths = 9 Width = 284 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'vStoricoAllarmiExp' GO EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'vStoricoAllarmiExp' GO USE [master] GO ALTER DATABASE [CMS-OMR] SET READ_WRITE GO