SELECT COUNT(*) FROM master.dbo.sysdatabases WHERE [name] = @DbName CREATE DATABASE [{0}] COLLATE Latin1_General_CI_AI; ALTER DATABASE [{0}] SET RECOVERY SIMPLE; SELECT FULLTEXTSERVICEPROPERTY('IsFullTextInstalled') IF NOT EXISTS (SELECT 1 FROM sys.databases WHERE [Name] = DB_NAME() AND [is_fulltext_enabled] = 1 ) BEGIN EXEC sp_fulltext_database 'enable' END SELECT is_fulltext_enabled FROM sys.databases WHERE [Name] = DB_NAME() DECLARE @DatabaseName AS SYSNAME = '{0}' IF EXISTS (SELECT * FROM sys.Databases WHERE[NAME] = @DatabaseName AND [COLLATION_NAME] <> 'Latin1_General_CI_AI') BEGIN IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @DatabaseName) BEGIN ALTER DATABASE [{0}] COLLATE Latin1_General_CI_AI END END SELECT COUNT(*) FROM sys.Databases WHERE[NAME] = @DatabaseName AND [COLLATION_NAME] = 'Latin1_General_CI_AI' SELECT 1 WHERE (OBJECT_ID(N'main-db-version', N'U') IS NOT NULL) AND (OBJECT_ID(N'main-user', N'U') IS NOT NULL) AND (OBJECT_ID(N'main-computer', N'U') IS NOT NULL) AND (OBJECT_ID(N'main-scans', N'U') IS NOT NULL) AND (OBJECT_ID(N'main-scan-history', N'U') IS NOT NULL) AND (OBJECT_ID(N'main-column-validation', N'U') IS NOT NULL) AND (OBJECT_ID(N'main-config', N'U') IS NOT NULL) AND (OBJECT_ID(N'main-computer-quickaction', N'U') IS NOT NULL) AND EXISTS(SELECT * FROM sys.fulltext_catalogs WHERE name='search_catalog') SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-db-version]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-db-version]...'; CREATE TABLE [main-db-version]( [db_version] [int] NOT NULL, [db_revision] [int] NOT NULL, CONSTRAINT [PK_main-db-version] PRIMARY KEY CLUSTERED ( [db_version] ASC, [db_revision] ASC ) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-user]...'; CREATE TABLE [main-user]( [timestamp] [timestamp] NOT NULL, [id] [uniqueidentifier] NOT NULL, [last_seen] [datetime] NOT NULL, [sid] [nvarchar](50) NULL, [sid_bin] [varbinary](68) NULL, [account] [nvarchar](256) NOT NULL, [full_name] [nvarchar](256) NOT NULL, [upn_internal] [nvarchar](256) NULL, [upn_external] [nvarchar](256) NULL, [mail] [nvarchar](1024) NULL, [phone] [nvarchar](1024) NULL, [phone_rev] [nvarchar](1024) NULL, [id_agent] [int] NULL, [is_active] [int] NOT NULL, [last_seen_by_agent] [datetime] NULL, CONSTRAINT [PK_main-user] PRIMARY KEY CLUSTERED ([id] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]; ALTER TABLE [main-user] ADD CONSTRAINT [DF_main-user_id] DEFAULT (newid()) FOR [id]; ALTER TABLE [main-user] ADD CONSTRAINT [DF_main-user_is_active] DEFAULT ((0)) FOR [is_active]; CREATE UNIQUE NONCLUSTERED INDEX [IX_main-user_sid] ON [main-user] ([sid_bin] ASC)WITH (IGNORE_DUP_KEY = ON, DROP_EXISTING = OFF) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [IX_main-user_full_name] ON [main-user] ([full_name] ASC)WITH (DROP_EXISTING = OFF) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [IX_main-user_last_seen] ON [main-user] ([last_seen] ASC)WITH (DROP_EXISTING = OFF) ON [PRIMARY]; PRINT N' ...done.'; END IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user-local]') AND type in (N'U')) BEGIN PRINT N'Start creating table [main-user-local]...'; CREATE TABLE [main-user-local]( [id] [uniqueidentifier] NOT NULL, [id_agent] [int] NOT NULL, [account] [nvarchar](256) NOT NULL, [sid] [nvarchar](50) NOT NULL, [sid_bin] [varbinary](68) NOT NULL, [last_seen_by_agent] [datetime] NULL, CONSTRAINT [PK_main-user-local] PRIMARY KEY CLUSTERED ([sid_bin] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] ALTER TABLE [main-user-local] WITH CHECK ADD CONSTRAINT [FK_main-user-local_main-user] FOREIGN KEY([id]) REFERENCES [main-user] ([id]) ON DELETE CASCADE ALTER TABLE [main-user-local] CHECK CONSTRAINT [FK_main-user-local_main-user] PRINT N'... done.' END IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user-tokens]') AND type in (N'U')) BEGIN PRINT N'Start creating table [main-user-tokens]...'; CREATE TABLE [main-user-tokens]( [timestamp] [timestamp] NOT NULL, [id] [uniqueidentifier] NOT NULL, [type] [int] NOT NULL, [name] [nvarchar](255) NULL, [name2] [nvarchar](255) NULL, [secret] [nvarchar](max) NULL, [validUntil] [datetime] NULL, [renewUntil] [datetime] NULL, CONSTRAINT [PK_main-user-tokens] PRIMARY KEY CLUSTERED ([id] ASC,[type] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] ALTER TABLE [main-user-tokens] WITH CHECK ADD CONSTRAINT [FK_main-user-tokens_main-user] FOREIGN KEY([id]) REFERENCES [main-user] ([id]) ON DELETE CASCADE ALTER TABLE [main-user-tokens] CHECK CONSTRAINT [FK_main-user-tokens_main-user] PRINT N'... done.' END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-computer]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-computer]...'; CREATE TABLE [main-computer]( [timestamp] [timestamp] NOT NULL, [id] [uniqueidentifier] NOT NULL, [last_seen] [datetime] NOT NULL, [sid] [nvarchar](50) NULL, [sid_bin] [varbinary](68) NULL, [name] [nvarchar](256) NOT NULL, [upn_internal] [nvarchar](256) NOT NULL, [id_agent] [int] NULL, [is_active] [int] NULL, [last_seen_by_agent] [datetime] NULL, CONSTRAINT [PK_main-computer] PRIMARY KEY CLUSTERED ([id] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]; ALTER TABLE [main-computer] ADD CONSTRAINT [DF_main-computer_id] DEFAULT (newid()) FOR [id]; CREATE NONCLUSTERED INDEX [IX_main-computer_sid] ON [main-computer] ([sid_bin] ASC)WITH (DROP_EXISTING = OFF) ON [PRIMARY]; CREATE UNIQUE NONCLUSTERED INDEX [IX_main-computer_upn_internal] ON [main-computer] ([upn_internal] ASC )WITH (IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [IX_main-computer_last_seen] ON [main-computer] ([last_seen] ASC)WITH (DROP_EXISTING = OFF) ON [PRIMARY]; CREATE UNIQUE NONCLUSTERED INDEX [IX_main-computer_name] ON [main-computer] ([name] ASC )WITH (IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF) ON [PRIMARY]; PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-scans]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-scans]...'; CREATE TABLE [main-scans]( [Scan] [nchar](32) NOT NULL, [LastTime] [datetime] NOT NULL, CONSTRAINT [PK_main-scans] PRIMARY KEY CLUSTERED ([Scan] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]; PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM [main-scans] WHERE [Scan] = 'Default') INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES ('Default','1970-01-01 00:00:00'); IF NOT EXISTS (SELECT * FROM [main-scans] WHERE [Scan] = 'AgentScan-all') INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES ('AgentScan-all','1971-01-01 00:00:00'); IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-scan-history]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-scan-history]...'; CREATE TABLE [main-scan-history]( [ScanId] [uniqueidentifier] NOT NULL, [Scan] [nchar](32) NOT NULL, [TimeFrameFrom] [datetime] NOT NULL, [TimeFrameTo] [datetime] NOT NULL, [ExecutionTime] [datetime] NOT NULL, [State] [tinyint] NOT NULL, CONSTRAINT [PK_main-scans-history] PRIMARY KEY CLUSTERED ( [ScanId] ASC ) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]; ALTER TABLE [main-scan-history] ADD CONSTRAINT [DF_main-scans-history_ScanId] DEFAULT (newid()) FOR [ScanId]; ALTER TABLE [main-scan-history] ADD CONSTRAINT [DF_main-scan-history_State] DEFAULT ((0)) FOR [State]; ALTER TABLE [main-scan-history] WITH CHECK ADD CONSTRAINT [FK_main-scan-history_main-scans] FOREIGN KEY([Scan]) REFERENCES [main-scans] ([Scan]); ALTER TABLE [main-scan-history] CHECK CONSTRAINT [FK_main-scan-history_main-scans]; PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM [main-scan-history] WHERE [ScanId] = '00000000-0000-0000-0000-000000000000') INSERT INTO [main-scan-history] ([ScanId], [Scan], [TimeFrameFrom], [TimeFrameTo], [ExecutionTime], [State]) VALUES ('00000000-0000-0000-0000-000000000000', 'Default','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00',0); IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-column-validation]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-column-validation]...'; CREATE TABLE [main-column-validation]( [Connector] [nvarchar](15) NOT NULL, [Instance] [nvarchar](50) NOT NULL, [SubTable] [nvarchar](50) NOT NULL, [Column] [nvarchar](50) NOT NULL, [isValid] [tinyint] NOT NULL, CONSTRAINT [PK_main-column-validation] PRIMARY KEY CLUSTERED ([Connector] ASC, [Instance] ASC, [SubTable] ASC, [Column] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]; PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.fulltext_catalogs WHERE name='search_catalog') BEGIN PRINT N'start creating fulltext catalog [search_catalog]...'; CREATE FULLTEXT CATALOG [search_catalog] WITH ACCENT_SENSITIVITY = OFF AS DEFAULT; CREATE FULLTEXT INDEX ON [main-user] ([account] LANGUAGE 'Neutral', [full_name] LANGUAGE 'Neutral', [upn_external] LANGUAGE 'Neutral', [mail] LANGUAGE 'Neutral', [phone] LANGUAGE 'Neutral', [phone_rev] LANGUAGE 'Neutral') KEY INDEX [PK_main-user] ON [search_catalog]; CREATE FULLTEXT INDEX ON [main-computer] ([name] LANGUAGE 'Neutral') KEY INDEX [PK_main-computer] ON [search_catalog]; PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM [main-db-version] WHERE [db_version] = 1 AND [db_revision] = 0) INSERT INTO [main-db-version] ([db_version], [db_revision]) VALUES (1,0); IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-config]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-config]...'; CREATE TABLE [main-config]( [Key] [nvarchar](32) NOT NULL, [Value] [nvarchar](1024) NULL, CONSTRAINT [PK_main-config] PRIMARY KEY CLUSTERED ( [Key] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-computer-quickaction]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-computer-quickaction]...'; CREATE TABLE [main-computer-quickaction]( [ExecutionId] [int] IDENTITY(1,1) NOT NULL, [QActionId] [uniqueidentifier] NOT NULL, [QActionName] [nvarchar](100) NOT NULL, [DeviceId] [uniqueidentifier] NOT NULL, [UserId] [uniqueidentifier] NULL, [Start] [datetime] NOT NULL, [Finish] [datetime] NOT NULL, [ResultType] [nvarchar](32) NULL, [ExecutionType] [nvarchar](32) NULL, [Parameters] [nvarchar](max) NULL, [Result] [nvarchar](max) NULL, [ErrorCode] [int] NULL, [ErrorDescription] [nvarchar](max) NULL, CONSTRAINT [PK_ExecutionId] PRIMARY KEY CLUSTERED ( [ExecutionId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] PRINT N' ...done.'; END SELECT 1 WHERE (OBJECT_ID(N'adscan-info', N'U') IS NOT NULL) AND (OBJECT_ID(N'adscan-nodes', N'U') IS NOT NULL) SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[adscan-info]') AND type in (N'U')) BEGIN PRINT N'start creating table [adscan-info]...'; CREATE TABLE [adscan-info]( [timestamp] [timestamp] NOT NULL, [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](50) NOT NULL, [last_run] [datetime] NOT NULL, CONSTRAINT [PK_adscan-info] PRIMARY KEY CLUSTERED ([id] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]; PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[adscan-nodes]') AND type in (N'U')) BEGIN PRINT N'start creating table [adscan-nodes]...'; CREATE TABLE [adscan-nodes]( [timestamp] [timestamp] NOT NULL, [id_scan] [int] NOT NULL, [name] [nvarchar](1024) NOT NULL, [fingerprint] [nvarchar](1024) NOT NULL, [invocation_id] [nvarchar](40) NULL, [last_usn] [numeric](18, 0) NULL, CONSTRAINT [PK_adscan-nodes] PRIMARY KEY CLUSTERED ([id_scan] ASC, [name] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]; ALTER TABLE [adscan-nodes] WITH CHECK ADD CONSTRAINT [FK_adscan-nodes_adscan-info] FOREIGN KEY([id_scan]) REFERENCES [adscan-info] ([id]) ON UPDATE CASCADE ON DELETE CASCADE; PRINT N' ...done.'; END SELECT COUNT(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[c4it_event_mapping]') AND type in (N'U') SELECT COUNT(*) FROM sys.objects WHERE (object_id = OBJECT_ID(N'[c4it_event]') OR object_id = OBJECT_ID(N'[c4it_event_data]')) AND type in (N'U') IF NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-db-version') SELECT 0, 0; ELSE SELECT MAX([db_version]), MAX([db_revision]) FROM [main-db-version] WHERE [db_version] = ( SELECT MAX([db_version]) FROM [main-db-version] ); DECLARE @cnt INT SET @cnt = 0 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-db-version]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-db-version]...'; CREATE TABLE [main-db-version]( [db_version] [int] NOT NULL, [db_revision] [int] NOT NULL, CONSTRAINT [PK_main-db-version] PRIMARY KEY CLUSTERED ( [db_version] ASC, [db_revision] ASC ) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]; SET @cnt = @cnt + 1; PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM [main-db-version] WHERE [db_version] = 0 AND [db_revision] = 0) INSERT INTO [main-db-version] ([db_version], [db_revision]) VALUES (0,0); IF NOT EXISTS (SELECT * FROM [main-scans] WHERE [Scan] = 'Default') INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES ('Default','1970-01-01 00:00:00'); IF NOT EXISTS (SELECT * FROM [main-scans] WHERE [Scan] = 'AgentScan-all') INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES ('AgentScan-all','1971-01-01 00:00:00'); IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-scan-history]') AND type in (N'U')) BEGIN PRINT N'start creating table [main-scan-history]...'; CREATE TABLE [main-scan-history]( [ScanId] [uniqueidentifier] NOT NULL, [ScanId] [uniqueidentifier] NOT NULL, [Scan] [nchar](32) NOT NULL, [TimeFrameFrom] [datetime] NOT NULL, [TimeFrameTo] [datetime] NOT NULL, [ExecutionTime] [datetime] NOT NULL, CONSTRAINT [PK_main-scans-history] PRIMARY KEY CLUSTERED ( [ScanId] ASC ) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]; ALTER TABLE [main-scan-history] ADD CONSTRAINT [DF_main-scans-history_ScanId] DEFAULT (newid()) FOR [ScanId]; ALTER TABLE [main-scan-history] WITH CHECK ADD CONSTRAINT [FK_main-scan-history_main-scans] FOREIGN KEY([Scan]) REFERENCES [main-scans] ([Scan]); ALTER TABLE [main-scan-history] CHECK CONSTRAINT [FK_main-scan-history_main-scans]; SET @cnt = @cnt + 1; PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM [main-scan-history] WHERE [ScanId] = '00000000-0000-0000-0000-000000000000') INSERT INTO [main-scan-history] ([ScanId], [Scan], [TimeFrameFrom], [TimeFrameTo], [ExecutionTime]) VALUES ('00000000-0000-0000-0000-000000000000', 'Default','1970-01-01 00:00:00','1970-01-01 00:00:00','1970-01-01 00:00:00'); IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ad-computer]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'ad-computer' AND Column_Name = 'ScanId') BEGIN PRINT N'Start adding column [ScanId] to table [ad-computer] ...'; ALTER Table [ad-computer] ADD [ScanId] [uniqueidentifier] NOT NULL CONSTRAINT [DF_ad-computer_ScanId] DEFAULT ('00000000-0000-0000-0000-000000000000') WITH VALUES; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ad-computer]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'ad-computer' AND Column_Name = 'distinguishedName') BEGIN PRINT N'Start adding column [distinguishedName] to table [ad-computer] ...'; ALTER Table [ad-computer] ADD distinguishedName nvarchar(1024) NULL; UPDATE [adscan-nodes] SET [last_usn] = NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ad-user]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'ad-user' AND Column_Name = 'ScanId') BEGIN PRINT N'Start adding column [ScanId] to table [ad-user] ...'; ALTER Table [ad-user] ADD [ScanId] [uniqueidentifier] NOT NULL CONSTRAINT [DF_ad-user_ScanId] DEFAULT ('00000000-0000-0000-0000-000000000000') WITH VALUES; SET @cnt = @cnt + 1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'last_seen_by_agent') BEGIN PRINT N'Start adding column [last_seen_by_agent] to table [main-user] ...'; ALTER Table [main-user] ADD [last_seen_by_agent] [datetime]; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-computer]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-computer' AND Column_Name = 'last_seen_by_agent') BEGIN PRINT N'Start adding column [last_seen_by_agent] to table [main-computer] ...'; ALTER Table [main-computer] ADD [last_seen_by_agent] [datetime]; SET @cnt = @cnt + 1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[adscan-domains]') AND type in (N'U')) BEGIN PRINT N'Start creating table [adscan-domains]...'; CREATE TABLE [adscan-domains]( [domainDns] [nvarchar](128) NOT NULL, [domainNB] [nvarchar](16) NOT NULL, CONSTRAINT [PK_adscan-domains] PRIMARY KEY CLUSTERED ([domainDns] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'domainDns') BEGIN PRINT N'Start adding column [domainDns] to table [main-user] ...'; ALTER Table [main-user] ADD [domainDns] NVARCHAR(128) ; ALTER Table [main-user] ADD [domainNB] NVARCHAR(16) ; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-computer]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-computer' AND Column_Name = 'domainNB') BEGIN PRINT N'Start adding column [domainNB] to table [main-computer] ...'; ALTER Table [main-computer] ADD [domainDns] NVARCHAR(128) ; ALTER Table [main-computer] ADD [domainNB] NVARCHAR(16) ; SET @cnt = @cnt + 1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'id_azure') BEGIN PRINT N'Start adding column [id_azure] to table [main-user] ...'; ALTER Table [main-user] ADD [id_azure] [uniqueidentifier]; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'id_agent_azure') BEGIN PRINT N'Start adding column [id_agent_azure] to table [main-user] ...'; ALTER Table [main-user] ADD [id_agent_azure] [int]; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'tenant_azure') BEGIN PRINT N'Start adding column [tenant_azure] to table [main-user] ...'; ALTER Table [main-user] ADD [tenant_azure] [uniqueidentifier]; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'id_agent') AND NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[main-user]') AND [name] = 'IX_main-user_id_agent') BEGIN PRINT N'Start creating index [IX_main-user_id_agent] on table [main-user] ...'; CREATE NONCLUSTERED INDEX [IX_main-user_id_agent] ON [main-user] ([id_agent] ASC); SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'id_agent_azure') AND NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[main-user]') AND [name] = 'IX_main-user_id_agent_azure') BEGIN PRINT N'Start creating index [IX_main-user_id_agent_azure] on table [main-user] ...'; CREATE NONCLUSTERED INDEX [IX_main-user_id_agent_azure] ON [main-user] ([id_agent_azure] ASC); SET @cnt = @cnt + 1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'domainDns') AND NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[main-user]') AND [name] = 'IX_main-user_account') BEGIN PRINT N'Start creating index [IX_main-user_account] on table [main-user] ...'; CREATE NONCLUSTERED INDEX [IX_main-user_account] ON [main-user] ([account] ASC, [domainDns] ASC) SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-computer' AND Column_Name = 'name') AND NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[main-computer]') AND [name] = 'IX_main-computer_name') BEGIN PRINT N'Start creating index [IX_main-computer_name] on table [main-computer] ...'; CREATE NONCLUSTERED INDEX [IX_main-computer_name] ON [main-computer] ([name] ASC) SET @cnt = @cnt + 1; PRINT N'... done.' END IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user-local]') AND type in (N'U')) BEGIN PRINT N'Start creating table [main-user-local]...'; CREATE TABLE [main-user-local]( [id] [uniqueidentifier] NOT NULL, [id_agent] [int] NOT NULL, [account] [nvarchar](256) NOT NULL, [sid] [nvarchar](50) NOT NULL, [sid_bin] [varbinary](68) NOT NULL, [last_seen_by_agent] [datetime] NULL, CONSTRAINT [PK_main-user-local] PRIMARY KEY CLUSTERED ([sid_bin] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] ALTER TABLE [main-user-local] WITH CHECK ADD CONSTRAINT [FK_main-user-local_main-user] FOREIGN KEY([id]) REFERENCES [main-user] ([id]) ON DELETE CASCADE ALTER TABLE [main-user-local] CHECK CONSTRAINT [FK_main-user-local_main-user] SET @cnt = @cnt + 1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user-tokens]') AND type in (N'U')) BEGIN PRINT N'Start creating table [main-user-tokens]...'; CREATE TABLE [main-user-tokens]( [timestamp] [timestamp] NOT NULL, [id] [uniqueidentifier] NOT NULL, [type] [int] NOT NULL, [name] [nvarchar](255) NULL, [name2] [nvarchar](255) NULL, [secret] [nvarchar](max) NULL, [validUntil] [datetime] NULL, [renewUntil] [datetime] NULL, CONSTRAINT [PK_main-user-tokens] PRIMARY KEY CLUSTERED ([id] ASC,[type] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] ALTER TABLE [main-user-tokens] WITH CHECK ADD CONSTRAINT [FK_main-user-tokens_main-user] FOREIGN KEY([id]) REFERENCES [main-user] ([id]) ON DELETE CASCADE ALTER TABLE [main-user-tokens] CHECK CONSTRAINT [FK_main-user-tokens_main-user] SET @cnt = @cnt + 1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user-tokens]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user-tokens' AND Column_Name = 'renewUntil') BEGIN PRINT N'Start adding column [renewUntil] to table [main-user-tokens] ...'; ALTER Table [main-user-tokens] ADD [renewUntil] [datetime] NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-computer]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-computer' AND Column_Name = 'id_intune') BEGIN PRINT N'Start adding column [id_intune] to table [main-computer] ...'; ALTER Table [main-computer] ADD [id_intune] [uniqueidentifier] NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-computer]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-computer' AND Column_Name = 'deviceId_azure') BEGIN PRINT N'Start adding column [deviceId_azure] to table [main-computer] ...'; ALTER Table [main-computer] ADD [deviceId_azure] [uniqueidentifier] NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-computer]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-computer' AND Column_Name = 'id_azure') BEGIN PRINT N'Start adding column [id_azure] to table [main-computer] ...'; ALTER Table [main-computer] ADD [id_azure] [uniqueidentifier] NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-computer]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-computer' AND Column_Name = 'tenant_azure') BEGIN PRINT N'Start adding column [tenant_azure] to table [main-computer] ...'; ALTER Table [main-computer] ADD [tenant_azure] [uniqueidentifier] NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_main-computer_deviceId_azure') BEGIN CREATE NONCLUSTERED INDEX [IX_main-computer_deviceId_azure] ON [main-computer] ([deviceId_azure] ASC); SET @cnt = @cnt+1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'id_citrix') BEGIN PRINT N'Start adding column [id_citrix] to table [main-user] ...'; ALTER Table [main-user] ADD [id_citrix] int NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[main-user]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'main-user' AND Column_Name = 'tenant_citrix') BEGIN PRINT N'Start adding column [tenant_citrix] to table [main-user] ...'; ALTER Table [main-user] ADD [tenant_citrix] nvarchar(100) NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[QActions]') AND type in (N'U')) AND NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'QActions' AND Column_Name = 'TimeStamp') BEGIN PRINT N'Start adding column [TimeStamp] to table [QActions] ...'; ALTER Table [QActions] ADD [TimeStamp] Datetime NULL; SET @cnt = @cnt + 1; PRINT N'... done.' END IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_main-user_upn_external') BEGIN CREATE NONCLUSTERED INDEX [IX_main-user_upn_external] ON [main-user] ([upn_external] ASC); SET @cnt = @cnt+1; PRINT N'... done.' END SELECT @cnt IF NOT EXISTS (SELECT 1 FROM [main-db-version] WHERE [db_version] = @version AND [db_revision] = @revision) INSERT INTO [main-db-version] ([db_version], [db_revision]) VALUES (@version,@revision); SELECT [Column] FROM [main-column-validation] WHERE [Table] = @Table AND [Instance] = @Instance AND [isValid] = 1 SELECT [Column], [isValid] FROM [main-column-validation] WHERE [Table] = @Table AND [Instance] = @Instance INSERT INTO [main-column-validation] ([Table] [Instance], [Column], [isValid]) VALUES (@Table, @Instance, @Column, @isValid) UPDATE [main-column-validation] SET [isValid] = @isValid WHERE [Table] = @Table AND [Instance] = @Instance AND [Column] = @Column DELETE FROM [main-column-validation] WHERE [Table] = @Table AND [Instance] = @Instance AND [Column] = @Column IF NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = '{0}' AND Column_Name = '{1}') BEGIN ALTER Table [{0}] ADD [{1}] {2} {3}; SELECT 1 END SELECT COUNT(*) FROM (SELECT * FROM Information_Schema.Columns WHERE Table_Name = '{0}' AND Column_Name = 'ScanId') t UPDATE [adscan-nodes] SET [last_usn] = NULL IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[c4it_event]') AND type in (N'U')) BEGIN IF NOT EXISTS(SELECT * FROM sys.indexes i JOIN sys.tables t ON t.object_id = i.object_id WHERE t.name like 'c4it_event' and i.name like 'IDX-C4IT-c4it_event-account') BEGIN PRINT N'Creating index IDX-C4IT-c4it_event-account...'; CREATE NONCLUSTERED INDEX [IDX-C4IT-c4it_event-account] ON [c4it_event] ([deviceaccountcode],[measurecode],[eventdate]) INCLUDE ([devicecode],[value],[DURATION]); PRINT N'...done'; END END IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[c4it_event]') AND type in (N'U')) BEGIN IF NOT EXISTS(SELECT * FROM sys.indexes i JOIN sys.tables t ON t.object_id = i.object_id WHERE t.name like 'c4it_event' and i.name like 'IDX-C4IT-c4it_event-device') BEGIN PRINT N'Creating index IDX-C4IT-c4it_event-device...'; CREATE NONCLUSTERED INDEX [IDX-C4IT-c4it_event-device] ON [c4it_event] ([devicecode],[measurecode],[eventdate]) INCLUDE ([deviceaccountcode],[value],[DURATION]); PRINT N'...done'; END END IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[c4it_event_data]') AND type in (N'U')) BEGIN IF NOT EXISTS(SELECT * FROM sys.indexes i JOIN sys.tables t ON t.object_id = i.object_id WHERE t.name like 'c4it_event_data' and i.name like 'IDX-C4IT-c4it_event_data-device') BEGIN PRINT N'Creating index IDX-C4IT-c4it_event_data-device...'; CREATE NONCLUSTERED INDEX [IDX-C4IT-c4it_event_data-device] ON [c4it_event_data] ([devicecode],[measurecode],[eventdate]) INCLUDE ([deviceaccountcode],[value],[DURATION]); PRINT N'...done'; END END IF NOT EXISTS(SELECT * FROM sys.indexes i JOIN sys.tables t ON t.object_id = i.object_id WHERE t.name like 'device_attribute' and i.name like 'IDX-C4IT-device_attribute-device') BEGIN PRINT N'Creating index IDX-C4IT-device_attribute-device...'; CREATE NONCLUSTERED INDEX [IDX-C4IT-device_attribute-device] ON [device_attribute] ([devicecode]) PRINT N'...done'; END SELECT [from],[to], [eventtable], [eventdatatable], [eventdeviceactivitytable], [eventuseractivitytable] FROM [c4it_event_mapping] WHERE [orgcode]=@ORGCODE ORDER BY [to] SELECT [LastTime] FROM [main-scans] WHERE [Scan] = @Name UPDATE [main-scans] SET [LastTime]=@LastTime WHERE [Scan]=@Name IF @@ROWCOUNT = 0 INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES (@Name, @LastTime) SELECT @@ROWCOUNT SELECT [id], [name], [last_run] FROM [adscan-info] DELETE FROM [adscan-info] WHERE [id]=@ID UPDATE [adscan-domains] SET [domainNB] = @domainNB WHERE [domainDns] = @domainDns IF @@ROWCOUNT = 0 INSERT INTO [adscan-domains] ([domainDns], [domainNB]) VALUES (@domainDns, @domainNB) SELECT [domainDns], [domainNB] FROM [adscan-domains] DECLARE @RetVal int; SET @RetVal=@ID UPDATE [adscan-info] SET [name]=@Name, [last_run]=@LastRun WHERE [id]=@ID IF @@ROWCOUNT = 0 BEGIN INSERT INTO [adscan-info] ([name], [last_run]) VALUES (@Name, @LastRun) SET @RetVal = SCOPE_IDENTITY() END SELECT @RetVal as [RetVal] SELECT [id_scan], [name], [fingerprint], [invocation_id], [last_usn] FROM [adscan-nodes] WHERE [id_scan]=@ScanID UPDATE [adscan-nodes] SET [fingerprint]=@Fingerprint, [invocation_id]=@InvocationId, [last_usn]=@LastUsn WHERE [id_scan]=@ScanID and [name]=@Name IF @@ROWCOUNT = 0 INSERT INTO [adscan-nodes] ([id_scan], [name], [fingerprint], [invocation_id], [last_usn]) VALUES (@ScanID, @Name, @Fingerprint, @InvocationId, @LastUsn) SELECT * FROM( SELECT TOP 11 1 AS [Type], [full_name], [id], [is_active], [upn_internal], [id_agent], [account], COALESCE([domainDns],[domainNB]) [domain] FROM [main-user] (nolock) WHERE CONTAINS(([full_name],[account],[upn_external], [mail]),@SEARCH) AND ([is_active] = 1 OR [last_seen_by_agent] >= DATEADD(DAY, -@DAYS,GETUTCDATE())) ORDER BY [full_name] UNION SELECT TOP 11 0 AS [Type], [name], [id], [is_active], [upn_internal], [id_agent], [name] [account], COALESCE([domainDns],[domainNB]) FROM [main-computer] (nolock) WHERE CONTAINS(([name]),@SEARCH) ORDER BY [name] ) AS D ORDER BY [Type], [full_name] WAITFOR DELAY '00:00:06'; SELECT * FROM( SELECT TOP 11 1 AS [Type], [full_name], [id], [is_active], [upn_internal], [id_agent], [account], COALESCE([domainDns],[domainNB]) [domain] FROM [main-user] (nolock) WHERE CONTAINS(([full_name],[account],[upn_external], [mail]),@SEARCH) AND ([is_active] = 1 OR [last_seen_by_agent] >= DATEADD(DAY, -@DAYS,GETUTCDATE())) ORDER BY [full_name] UNION SELECT TOP 11 0 AS [Type], [name], [id], [is_active], [upn_internal], [id_agent], [name] [account], COALESCE([domainDns],[domainNB]) FROM [main-computer] (nolock) WHERE CONTAINS(([name]),@SEARCH) ORDER BY [name] ) AS D ORDER BY [Type], [full_name] SELECT * FROM( SELECT TOP 11 2 AS [Type], [full_name], [id], [is_active], [upn_internal], [id_agent], [account], COALESCE([domainDns],[domainNB]) [domain], [phone] FROM [main-user] (nolock) WHERE CONTAINS(([phone_rev]),@REV) AND ([is_active] = 1 OR [last_seen_by_agent] >= DATEADD(DAY, -@DAYS,GETUTCDATE())) ORDER BY [full_name] UNION SELECT TOP 11 1 AS [Type], [full_name], [id], [is_active], [upn_internal], [id_agent], [account], COALESCE([domainDns],[domainNB]), [phone] FROM [main-user] (nolock) WHERE CONTAINS(([full_name],[account],[upn_external], [mail]),@SEARCH) AND ([is_active] = 1 OR [last_seen_by_agent] >= DATEADD(DAY, -@DAYS,GETUTCDATE())) ORDER BY [full_name] UNION SELECT TOP 11 0 AS [Type], [name], [id], [is_active], [upn_internal], [id_agent], [name] [account], COALESCE([domainDns],[domainNB]), NULL FROM [main-computer] (nolock) WHERE CONTAINS(([name]),@SEARCH) ORDER BY [name] ) AS D ORDER BY [Type], [full_name] SELECT TOP 11 1 AS [Type], [full_name], [id], [is_active], [upn_internal], [id_agent], [account], COALESCE([domainDns],[domainNB]) [domain] FROM [main-user] (nolock) WHERE CONTAINS(([{0}]),@SEARCH) AND ([is_active] = 1 OR [last_seen_by_agent] >= DATEADD(DAY, -@DAYS,GETUTCDATE())) ORDER BY [full_name] SELECT TOP 11 2 AS [Type], [full_name], [id], [is_active], [upn_internal], [id_agent], [account], COALESCE([domainDns],[domainNB]) [domain], [phone] FROM [main-user] (nolock) WHERE CONTAINS(([{0}]),@REV) AND ([is_active] = 1 OR [last_seen_by_agent] >= DATEADD(DAY, -@DAYS,GETUTCDATE())) ORDER BY [full_name] SELECT TOP 11 0 AS [Type], [name], [id], [is_active], [upn_internal], [id_agent], [name] [account], COALESCE([domainDns],[domainNB]) [domain] FROM [main-computer] (nolock) WHERE [name] like @name ORDER BY [Type], [name] SELECT TOP 11 0 AS [Type], [name], [id], [is_active], [upn_internal], [id_agent], [name] [account], COALESCE([domainDns],[domainNB]) [domain] FROM [main-computer] (nolock) WHERE [name] like @name AND ([domainNB] like @domain OR [domainDns] like @domain) ORDER BY [Type], [name] SELECT TOP 11 1 AS [Type], [full_name], [id], [is_active], [upn_internal], [id_agent], [account], COALESCE([domainDns],[domainNB]) [domain] FROM [main-user] (nolock) WHERE [sid_bin] in ({0}) ORDER BY [full_name] SELECT TOP 11 1 AS [Type], [full_name], [id], [is_active], [upn_internal], [id_agent], [account], COALESCE([domainDns],[domainNB]) [domain] FROM [main-user] (nolock) WHERE [id_azure] = @AzureId ORDER BY [full_name] SELECT [measurecode], [typecode], [orgcode], [valuejson] FROM [c4it_measure_attribute] WHERE [measurecode] in (40,41) AND [typecode] in (1,2) AND ( [orgcode] = @ORGCODE OR [orgcode] IS NULL) ORDER BY [measurecode], [typecode], [orgcode] SELECT e.[devicecode], d.[name], d.[domain], d.[lastupdate], MAX(e.[eventdate]) [eventdate], a.[valuejson] tenantID FROM [c4it_event] e (nolock) INNER JOIN [device] d (nolock) ON d.[devicecode] = e.[devicecode] LEFT JOIN [device_attribute] a ON a.[devicecode] = d.[devicecode] AND a.typecode = 10001 WHERE [measurecode] = 40 AND [eventdate] >= @LASTSCAN GROUP BY e.[devicecode], d.[name], d.[domain], d.[lastupdate], a.[valuejson] SELECT e.[devicecode], d.[name], d.[domain], d.[lastupdate], MAX(e.[eventdate]) [eventdate], a.[valuejson] tenantID FROM [{0}] (nolock) e INNER JOIN [device] (nolock) d ON d.[devicecode] = e.[devicecode] LEFT JOIN [device_attribute] a ON a.[devicecode] = d.[devicecode] AND a.typecode = 10001 WHERE e.[eventdate] >= @LASTSCAN GROUP BY e.[devicecode], d.[name], d.[domain], d.[lastupdate], a.[valuejson] ORDER BY MAX(e.[eventdate]) SELECT e.[deviceaccountcode],u.[uniqueid],u.[name],u.[domain], MAX(e.[eventdate]) last_seen FROM [c4it_event] (nolock) e INNER JOIN [device_account] (nolock) u ON u.[deviceaccountcode] = e.[deviceaccountcode] WHERE e.[measurecode] = 41 AND e.[eventdate] >= @LASTSCAN GROUP BY e.[deviceaccountcode],u.[name],u.[uniqueid],u.[domain] SELECT e.[deviceaccountcode],u.[uniqueid],u.[name],u.[domain], MAX(e.[eventdate]) last_seen FROM [{0}] (nolock) e INNER JOIN [device_account] (nolock) u ON u.[deviceaccountcode] = e.[deviceaccountcode] WHERE e.[eventdate] >= @LASTSCAN GROUP BY e.[deviceaccountcode],u.[name],u.[uniqueid],u.[domain] UPDATE [main-computer] SET [id_agent]=NULL WHERE [id_agent]=@id_agent AND [upn_internal]<>@upn_internal UPDATE [main-computer] SET [id_agent]=@id_agent, [last_seen]=@last_seen, [last_seen_by_agent]=@lastAgent, [domainDns]=@domainDns, [domainNB]=@domainNB WHERE [upn_internal]=@upn_internal IF @@ROWCOUNT = 0 INSERT INTO [main-computer] ([id_agent], [name], [upn_internal], [last_seen], [last_seen_by_agent], [domainDns], [domainNB]) VALUES (@id_agent, @name, @upn_internal, @last_seen, @lastAgent, @domainDns, @domainNB) DELETE FROM [main-computer] WHERE id_agent IS NULL UPDATE [main-computer] SET [sid]=NULL, [sid_bin]=NULL WHERE [sid_bin]=@sid_bin AND [upn_internal]<>@upn_internal UPDATE [main-computer] SET [sid]=@sid, [sid_bin]=@sid_bin, [is_active]=@is_active WHERE [upn_internal]=@upn_internal UPDATE [main-computer] SET [id_azure]=@id, [deviceid_azure]=@deviceid, tenant_azure = @tenant WHERE [sid_bin]=@sid_bin UPDATE [main-computer] SET [id_intune]=@id WHERE [deviceId_azure]=@deviceId UPDATE [main-computer] SET [id_intune]=@id, [deviceid_azure]=@deviceid, tenant_azure = @tenant WHERE upn_internal = @upn_internal and [domainNB] is null UPDATE [main-user] SET [id_citrix]=@id WHERE [sid_bin]=@sid_bin UPDATE [main-user] SET [id_citrix]=@id WHERE upn_internal = @upn_internal AND [id_citrix] is null UPDATE [main-user] SET [id_agent]=@id_agent WHERE [sid_bin]=@sid_bin AND ([id_agent] is null OR [id_agent] != @id_agent) UPDATE [main-user] SET [last_seen_by_agent]=@lastAgent WHERE [sid_bin]=@sid_bin AND ([last_seen_by_agent] is null OR [last_seen_by_agent]<@lastAgent) UPDATE [main-user] SET [id_agent_azure]=@id_agent WHERE [id_azure]=@id_azure AND ([id_agent_azure] is null OR [id_agent_azure] != @id_agent) UPDATE [main-user] SET [last_seen_by_agent]=@lastAgent WHERE [id_azure]=@id_azure AND ([last_seen_by_agent] is null OR [last_seen_by_agent]<@lastAgent) UPDATE [main-user] SET [id_azure]=@id_azure, [tenant_azure] = @tenant WHERE [sid_bin]=@sid_bin SELECT [id] FROM [main-user] WHERE [account] = @Account and [domainDns] = @Domain UPDATE [main-user-local] SET [id]=@id, [id_agent]=@id_agent, [account]=@account, [last_seen_by_agent]=@lastseen WHERE [sid_bin]=@sid_bin IF @@ROWCOUNT = 0 INSERT INTO [main-user-local] ([id], [id_agent], [account], [sid], [sid_bin], [last_seen_by_agent]) VALUES (@id, @id_agent, @account, @sid, @sid_bin, @lastseen) SELECT @@ROWCOUNT UPDATE [main-user] SET [last_seen_by_agent]=@lastAgent WHERE [id]=@id AND ([last_seen_by_agent] is null OR [last_seen_by_agent]<@lastAgent) SELECT [id_agent], [last_seen_by_agent], [account] FROM [main-user-local] WHERE [id] = @ID SELECT TOP (3000) [full_name] + ' (' + [upn_internal] + ')', [id] FROM [main-user] WHERE [is_active] = 1 ORDER BY [full_name] SELECT TOP (3000) [full_name] + ' (' + [upn_internal] + ')', [id] FROM [main-user] WHERE [is_active] = 1 AND [last_seen_by_agent] > DATEADD(DAY, -14,GETUTCDATE()) ORDER BY [full_name] SELECT TOP (3000) [name], [id] FROM [main-computer] ORDER BY [name] SELECT TOP (3000) [name], [id] FROM [main-computer] WHERE [last_seen_by_agent] > DATEADD(DAY, -14,GETUTCDATE()) ORDER BY [name] SELECT [id] FROM [main-user] WHERE [account] like @account AND ([domainNB] like @domain OR [domainDns] like @domain) SELECT [sid_bin], [id_agent], [Name], [last_seen_by_agent], NULL , [tenant_azure],[id_intune], [deviceId_azure],null,null FROM [main-computer] WHERE id = @id SELECT [sid_bin], [id_agent], [account], [last_seen_by_agent], [id_agent_azure], [tenant_azure], [id_azure],null,[id_citrix],[tenant_citrix] FROM [main-user] WHERE id = @id SELECT [id], [full_name], [is_active], [account], COALESCE([domainDns], [domainNB] ), CASE WHEN [id_agent] <> @id THEN 1 ELSE 0 END FROM [main-user] WHERE [id_agent] = @id OR [id_agent_azure] = @id SELECT [id], [name], [is_active], [name], COALESCE([domainDns],[domainNB]), 0 FROM [main-computer] WHERE [id_agent] = @id SELECT mu.[id], mu.[full_name], mu.[is_active], ul.[account] FROM [main-user-local] ul JOIN [main-user] mu ON mu.[id] = ul.[id] WHERE ul.[id_agent] = @id SELECT [DEVICECODE],SUM(CONVERT(BIGINT,[DURATION])),MAX([EVENTDATE]) FROM [C4IT_EVENT] (nolock) WHERE [DEVICEACCOUNTCODE] = @ID AND [MEASURECODE] = 41 AND [EVENTDATE] >= CAST(DATEADD(DAY,-@Age, GETUTCDATE()) AS DATETIME2) GROUP BY [DEVICECODE] SELECT [DEVICEACCOUNTCODE],SUM(CONVERT(BIGINT,[DURATION])),MAX([EVENTDATE]) FROM [C4IT_EVENT] (nolock) WHERE [DEVICECODE] = @ID AND [MEASURECODE] = 41 AND [EVENTDATE] >= CAST(DATEADD(DAY,-@Age, GETUTCDATE()) AS DATETIME2) GROUP BY [DEVICEACCOUNTCODE] SELECT [devicecode], SUM(CONVERT(BIGINT,[DURATION])),MAX([EVENTDATE]) FROM [{0}] WHERE [deviceaccountcode] = @ID GROUP BY [devicecode] SELECT [deviceaccountcode], SUM(CONVERT(BIGINT,[DURATION])),MAX([EVENTDATE]) FROM [{0}] WHERE [devicecode] = @ID GROUP BY [deviceaccountcode] SELECT t.[NAME], d.[VALUEJSON], d.[DEVICECODE] FROM [device_attribute] (nolock) d JOIN [device_attribute_type] (nolock) t ON t.[TYPECODE] = d.[TYPECODE] WHERE [DEVICECODE] = @ID UNION ALL SELECT 'Name', [name], [DEVICECODE] FROM [device] (nolock) WHERE [DEVICECODE] = @ID UNION ALL SELECT 'DomainDns', [domain], [DEVICECODE] FROM [device] (nolock) WHERE [DEVICECODE] = @ID SELECT m.[measurecode], m.[NAME], m.[TYPECODE], o.[statuscode] FROM [C4IT_MEASURE] (nolock) m LEFT JOIN [c4it_measure_organization] (nolock) o ON o.[measurecode] = m.[measurecode] WHERE o.[orgcode] IS NULL OR o.[orgcode] = @ORGCODE SELECT m.[NAME], t.[SETTINGJSON] FROM [C4IT_MEASURE] (nolock) m JOIN [C4IT_MEASURE_TYPE] (nolock) t ON t.[TYPECODE] = m.[TYPECODE] WHERE t.[SETTINGJSON] IS NOT NULL SELECT [MEASURECODE], [EVENTDATE], [VALUE], [DURATION] FROM [C4IT_EVENT] (nolock) WHERE [DEVICECODE] = @ID AND [MEASURECODE] in ({0}) AND [EVENTDATE] >= CAST(DATEADD(DAY,-@Age, GETUTCDATE()) AS DATETIME2) SELECT [MEASURECODE], [EVENTDATE], [VALUE], [DURATION] FROM [C4IT_EVENT_DATA] (nolock) WHERE [DEVICECODE] = @ID AND [MEASURECODE] in ({0}) AND [EVENTDATE] >= CAST(DATEADD(DAY,-@Age, GETUTCDATE()) AS DATETIME2) SELECT [MEASURECODE], [EVENTDATE], [VALUE], [DURATION] FROM [{0}] (nolock) WHERE [DEVICECODE] = @ID AND [MEASURECODE] in ({1}) SELECT [MEASURECODE], [EVENTDATE], [VALUE], [DURATION] FROM [{0}] (nolock) WHERE [DEVICECODE] = @ID SELECT [ORGCODE] FROM [organization] (nolock) WHERE [NAME] = @ORGA SELECT [EVENTDATE], [VALUE], [DURATION] FROM [c4it_event_data] (nolock) WHERE [DEVICECODE]=@ID AND [MEASURECODE] = @MC AND [EVENTDATE] >= @MINDATE SELECT [EVENTDATE], [VALUE], [DURATION] FROM [c4it_event] (nolock) WHERE [DEVICECODE]=@ID AND [MEASURECODE] = @MC AND [EVENTDATE] >= @MINDATE SELECT [EVENTDATE], [VALUE], [DURATION] FROM [{0}] (nolock) WHERE [DEVICECODE]=@ID AND [MEASURECODE] = @MC AND [EVENTDATE] >= @MINDATE SELECT [EVENTDATE], [VALUE], [DURATION] FROM [{0}] (nolock) WHERE [DEVICECODE]=@ID AND [EVENTDATE] >= @MINDATE INSERT INTO [main-scan-history] ([ScanId], [Scan], [TimeFrameFrom], [TimeFrameTo], [ExecutionTime], [State]) VALUES (@ID, @Name, @From, @To, @Execute, 0 ) SELECT @@ROWCOUNT UPDATE [main-scan-history] SET [State]=1 WHERE [ScanId]=@ID SELECT [Scan] FROM [main-scan-history] WHERE [ScanId]=@ID DELETE FROM [main-scan-history] WHERE [ScanId] = (SELECT TOP 1 [ScanId] FROM [main-scan-history] WHERE [Scan] = @Name AND [State] = 1 ORDER BY [ExecutionTime] DESC); SELECT TOP 1 [ExecutionTime] FROM [main-scan-history] WHERE [Scan] = @Name AND [State] = 1 ORDER BY [ExecutionTime] DESC SELECT [Instance],[SubTable],[Column],[isValid] FROM [main-column-validation] WHERE [Connector]=@Connector SELECT TOP 1 [engine], [id_int] FROM [nxt-device] WHERE [name] = @NAME ORDER BY [last_seen] DESC SELECT TOP 1 [engine], [id_int] FROM [nxt-user] WHERE [id_sid_bin] = @SID ORDER BY [last_seen] DESC SELECT [ScanId], [Scan], [TimeFrameFrom], [TimeFrameTo] FROM [main-scan-history] WHERE ([TimeFrameTo] < DATEADD(day, -@Age1, GETUTCDATE()) OR ([TimeFrameTo] < DATEADD(MINUTE, -@Age2, GETUTCDATE()) AND [State] = 0)) AND ScanId != '00000000-0000-0000-0000-000000000000' DELETE FROM [main-scan-history] WHERE [ScanId] = @ID; SELECT 1 WHERE (OBJECT_ID(N'UserSessions', N'U') IS NOT NULL) AND (OBJECT_ID(N'Cases', N'U') IS NOT NULL) AND (OBJECT_ID(N'CaseTime', N'U') IS NOT NULL) AND (OBJECT_ID(N'QActionExecutions', N'U') IS NOT NULL) AND (OBJECT_ID(N'Tickets', N'U') IS NOT NULL) AND (OBJECT_ID(N'QActions', N'U') IS NOT NULL) AND (OBJECT_ID(N'QActionDescriptions', N'U') IS NOT NULL) AND (OBJECT_ID(N'Status', N'U') IS NOT NULL) AND (OBJECT_ID(N'StatusDescriptions', N'U') IS NOT NULL) SELECT 1 WHERE (OBJECT_ID(N'fn_GetLocalTimeStamp', N'FN') IS NOT NULL) AND (OBJECT_ID(N'fn_GetDayFromTimestamp', N'FN') IS NOT NULL) AND (OBJECT_ID(N'fn_GetHourIntervalFromTimestamp', N'FN') IS NOT NULL) IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[fn_GetLocalTimeStamp]') AND type in (N'FN')) BEGIN PRINT N'start creating functions [fn_GetLocalTimeStamp]...'; EXEC(N'CREATE FUNCTION [fn_GetLocalTimeStamp] ( @UTCTimeStamp DATETIME ) RETURNS DATETIME AS BEGIN DECLARE @ResultVar DATETIME -- Offset für Mitteleuropäische Zeit (CET) SET @ResultVar = SWITCHOFFSET(@UTCTimeStamp, N''+01:00''); -- Überprüfen, ob die umgewandelte Zeit innerhalb der Sommerzeit (CEST) liegt IF @UTCTimeStamp >= CAST(N''2023-03-26'' AS DATETIMEOFFSET) AND @UTCTimeStamp < CAST(N''2023-10-29'' AS DATETIMEOFFSET) BEGIN SET @ResultVar = SWITCHOFFSET(@UTCTimeStamp, N''+02:00''); END; RETURN @ResultVar END ') END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[fn_GetDayFromTimestamp]') AND type in (N'FN')) BEGIN PRINT N'start creating functions [fn_GetDayFromTimestamp]...'; EXEC(N'CREATE FUNCTION [fn_GetDayFromTimestamp] ( @TimeStamp DATETIME, @Language NVARCHAR(5) = N''DE'' ) RETURNS NVARCHAR(25) AS BEGIN DECLARE @ResultVar NVARCHAR(25) SELECT @ResultVar = CASE WHEN DATENAME(dw,(SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp))) IN (N''Montag'', N''Monday'') THEN IIF(@Language = N''DE'', N''1-Montag'', N''1-Monday'') WHEN DATENAME(dw,(SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp))) IN (N''Dienstag'', N''Tuesday'') THEN IIF(@Language = N''DE'', N''2-Dienstag'', N''2-Tuesday'') WHEN DATENAME(dw,(SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp))) IN (N''Mittwoch'', N''Wednesday'') THEN IIF(@Language = N''DE'', N''3-Mittwoch'', N''3-Wednesday'') WHEN DATENAME(dw,(SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp))) IN (N''Donnerstag'', N''Thursday'') THEN IIF(@Language = N''DE'', N''4-Donnerstag'', N''4-Thursday'') WHEN DATENAME(dw,(SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp))) IN (N''Freitag'', N''Friday'') THEN IIF(@Language = N''DE'', N''5-Freitag'', N''5-Friday'') WHEN DATENAME(dw,(SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp))) IN (N''Samstag'', N''Saturday'') THEN IIF(@Language = N''DE'', N''6-Samstag'', N''6-Saturday'') WHEN DATENAME(dw,(SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp))) IN (N''Sonntag'', N''Sunday'') THEN IIF(@Language = N''DE'', N''7-Sonntag'', N''7-Sunday'') END RETURN @ResultVar END ') END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[fn_GetHourIntervalFromTimestamp]') AND type in (N'FN')) BEGIN PRINT N'start creating functions [fn_GetHourIntervalFromTimestamp]...'; EXEC(N'CREATE FUNCTION [fn_GetHourIntervalFromTimestamp] ( @TimeStamp DATETIME ) RETURNS NVARCHAR(25) AS BEGIN DECLARE @ResultVar NVARCHAR(25) SELECT @ResultVar = CASE WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 0 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 2 THEN N''00:00-02:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 2 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 4 THEN N''02:00-04:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 4 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 6 THEN N''04:00-06:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 6 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 8 THEN N''06:00-08:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 8 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 10 THEN N''08:00-10:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 10 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 12 THEN N''10:00-12:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 12 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 14 THEN N''12:00-14:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 14 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 16 THEN N''14:00-16:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 16 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 18 THEN N''16:00-18:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 18 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 20 THEN N''18:00-20:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 20 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 22 THEN N''20:00-22:00'' WHEN DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) >= 22 AND DATEPART(HOUR, (SELECT dbo.fn_GetLocalTimeStamp( @TimeStamp ))) < 24 THEN N''22:00-00:00'' END RETURN @ResultVar END ') END IF NOT EXISTS (SELECT * FROM [sysusers] WHERE [issqlrole] = 1 AND [name] = 'db_executor') BEGIN   CREATE ROLE db_executor; END GRANT Execute ON fn_GetDayFromTimestamp TO db_executor; GRANT Execute ON fn_GetHourIntervalFromTimestamp TO db_executor; GRANT Execute ON fn_GetLocalTimeStamp TO db_executor; SELECT 1 WHERE (OBJECT_ID(N'vw_UserStatistics', N'V') IS NOT NULL) AND (OBJECT_ID(N'vw_DailyHourlyStatistic', N'V') IS NOT NULL) AND (OBJECT_ID(N'vw_QAExecutionsCountByUser', N'V') IS NOT NULL) AND (OBJECT_ID(N'vw_DailyStatistic', N'V') IS NOT NULL) AND (OBJECT_ID(N'vw_WeekdayCountsByMonth', N'V') IS NOT NULL) IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[vw_UserStatistics]') AND type in (N'V')) BEGIN PRINT N'start creating view [vw_UserStatistics]...'; EXEC(N'--@Revision:2 CREATE VIEW [dbo].[vw_UserStatistics] AS WITH UserSessions AS ( SELECT UserId , COUNT(SessionID) SessionCount, SUM(DATEDIFF(minute, UserSessions.Start, UserSessions.Finish)) [ActiveTime], SUM(DATEDIFF(minute, UserSessions.Start, UserSessions.Finish)) / COUNT(UserSessions.SessionId) [Ø-Time], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date], CAST(CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)) AS INT) AS [DateSort] FROM dbo.UserSessions WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) GROUP BY UserId, CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))), CAST(CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)) AS INT) ), UserCases AS ( SELECT UserSessions.UserId UserId, COUNT(CaseId) CaseCount, SUM(Cases.ActiveTime) ActiveTime, SUM(Cases.ActiveTime) / COUNT(CaseId) [Ø-Time], CAST(year(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(Cases.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(5))) AS [Date] FROM dbo.UserSessions JOIN dbo.Cases ON UserSessions.SessionId = Cases.SessionId WHERE dbo.fn_GetLocalTimeStamp(Cases.start) >= DATEADD(MONTH, -12, GETDATE()) AND Cases.[Finish] IS NOT NULL GROUP BY UserSessions.UserId, CAST(year(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(Cases.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(5))) ), UserQActions AS ( SELECT UserSessions.UserId UserId, COUNT(ExecutionId) ExecutionCount, CONVERT(DECIMAL ( 10,1 ),SUM(DATEDIFF(SECOND, QActionExecutions.Start, QActionExecutions.Finish))) / CONVERT(DECIMAL ( 10,1 ),COUNT(QActionId)) [Ø-Time], SUM(DATEDIFF(SECOND, QActionExecutions.Start, QActionExecutions.Finish)) ActiveTime, CAST(year(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5))) AS [Date] FROM dbo.UserSessions JOIN dbo.Cases ON UserSessions.SessionId = Cases.SessionId JOIN dbo.QActionExecutions ON QActionExecutions.CaseId = Cases.CaseId WHERE dbo.fn_GetLocalTimeStamp(QActionExecutions.start) >= DATEADD(MONTH, -12, GETDATE()) AND QActionExecutions.[Finish] IS NOT NULL GROUP BY UserSessions.UserId, CAST(year(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5))) ) SELECT US.UserId UserId, CASE WHEN muser.full_name IS NULL THEN N''User_''+LEFT(US.UserId,3) ELSE muser.full_name END FullName, US.Date, US.DateSort, US.SessionCount, US.ActiveTime SessionActiveTime, US.[Ø-Time] [Ø-SessionTime], ISNULL(Uc.CaseCount,0) CaseCount, ISNULL(UC.ActiveTime,0) CaseActiveTime, ISNULL(UC.[Ø-Time],0) [Ø-CaseTime] , ISNULL(UQA.ExecutionCount,0) QACount, ISNULL(UQA.ActiveTime,0) QAActiveTime, ISNULL(UQA.[Ø-Time],0) [Ø-QATime], IIF(Uc.CaseCount IS NOT NULL, CONVERT(DECIMAL ( 10,1 ),Uc.CaseCount) /CONVERT(DECIMAL ( 10,1 ),US.SessionCount),0) [Ø-Cases In Session] FROM UserSessions AS US LEFT JOIN UserCases UC ON US.UserId = UC.UserId AND US.Date = UC.Date LEFT JOIN UserQActions UQA ON US.UserId = UQA.UserId AND US.Date = UQA.Date LEFT JOIN [$DatabaseHistory$].[dbo].[main-user] muser ON muser.id = US.UserId ') END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[vw_DailyHourlyStatistic]') AND type in (N'V')) BEGIN PRINT N'start creating view [vw_DailyHourlyStatistic]...'; EXEC(N'--@Revision:2 CREATE VIEW [dbo].[vw_DailyHourlyStatistic] AS WITH TSessions AS ( SELECT dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], dbo.fn_GetHourIntervalFromTimestamp(start) AS [HourInterval], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date] FROM UserSessions WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN''), dbo.fn_GetHourIntervalFromTimestamp(start), CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ), TCases AS ( SELECT COUNT(CaseId) [Count], dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], dbo.fn_GetHourIntervalFromTimestamp(start) AS [HourInterval], SUM(ActiveTime) CaseTime, CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date] FROM dbo.Cases WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN''), dbo.fn_GetHourIntervalFromTimestamp(start), CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ), TQActions AS ( SELECT COUNT(QActionExecutions.ExecutionId) [Count], dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], dbo.fn_GetHourIntervalFromTimestamp(start) AS [HourInterval], SUM(DATEDIFF(second,start,Finish)) AS QATime, CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date] FROM QActionExecutions WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN'') , dbo.fn_GetHourIntervalFromTimestamp(start), CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ) SELECT S.[Day], S.HourInterval, ISNULL(C.[Count],0) CaseCount, ISNULL(Q.[Count],0) QactionCount, C.CaseTime, Q.QATime, CASE WHEN ISNULL(Q.[Count],0) = 0 OR ISNULL(C.[Count],0) = 0 THEN 0 ELSE CONVERT(DECIMAL(10,2),ISNULL(Q.[Count],0))/CONVERT(DECIMAL(10,2),ISNULL(C.[Count],0)) END QactionCountinCases, S.Date FROM TSessions AS S LEFT JOIN TCases AS C ON S.[Day] = C.[Day] AND S.HourInterval = C.HourInterval AND S.Date = C.Date LEFT JOIN TQActions Q ON S.[Day] = Q.[Day] AND S.HourInterval = Q.HourInterval AND S.Date = Q.Date ') END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[vw_DailyStatistic]') AND type in (N'V')) BEGIN PRINT N'start creating view [vw_DailyStatistic]...'; EXEC(N'--@Revision:2 CREATE VIEW [dbo].[vw_DailyStatistic] AS WITH TSessions AS ( SELECT dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)) AS [SessionDate], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date] FROM UserSessions with(nolock) WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) ), TCases AS ( SELECT COUNT(CaseId) [Count], dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date], SUM(Cases.ActiveTime) CaseTime FROM dbo.Cases with(nolock) WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN''), CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ), TQActions AS ( SELECT COUNT(QActionExecutions.ExecutionId) [Count], dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date], SUM(DATEDIFF(SECOND,start,Finish)) QactionTime FROM QActionExecutions with(nolock) WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN'') , CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ), TMinMax as ( SELECT MIN(dbo.fn_GetLocalTimeStamp(start)) minDate, max(dbo.fn_GetLocalTimeStamp(start)) maxDate FROM [dbo].[UserSessions] with(nolock) ),DateList AS ( SELECT DATEADD(DAY, number, (SELECT minDate from TMinMax)) AS CurrentDate FROM master.dbo.spt_values WHERE type = ''P'' AND number BETWEEN 0 AND DATEDIFF(DAY, (SELECT minDate from TMinMax), (SELECT maxDate from TMinMax)) ), Result AS ( SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 2 THEN 1 ELSE 0 END) AS DayCount, N''1-Monday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 3 THEN 1 ELSE 0 END) AS DayCount, N''2-Tuesday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 4 THEN 1 ELSE 0 END) AS DayCount, N''3-Wednesday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 5 THEN 1 ELSE 0 END) AS DayCount, N''4-Thursday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 6 THEN 1 ELSE 0 END) AS DayCount, N''5-Friday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 7 THEN 1 ELSE 0 END) AS DayCount, N''6-Saturday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 1 THEN 1 ELSE 0 END) AS DayCount, N''7-Sunday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) ) SELECT DISTINCT S.[Day], CASE WHEN ISNULL(C.[Count],0) = 0 OR ISNULL(cw.daycount,0) = 0 THEN 0 ELSE CONVERT(DECIMAL(10,2),C.[Count])/CONVERT(DECIMAL(10,2),cw.daycount) END AS [Ø-CaseCount], CASE WHEN ISNULL(Q.[Count],0) = 0 OR ISNULL(cw.daycount,0) = 0 THEN 0 ELSE CONVERT(DECIMAL(10,2),Q.[Count])/CONVERT(DECIMAL(10,2),cw.daycount) END AS [Ø-QactionCount], ISNULL(C.[Count],0) CaseCount, ISNULL(Q.[Count],0) QactionCount, CASE WHEN ISNULL(Q.[Count],0) = 0 OR ISNULL(C.[Count],0) = 0 THEN 0 ELSE CONVERT(DECIMAL(10,2),ISNULL(Q.[Count],0))/CONVERT(DECIMAL(10,2),ISNULL(C.[Count],0)) END QactionCountinCases, CASE WHEN ISNULL(C.[Count],0) = 0 OR ISNULL(cw.daycount,0) = 0 THEN 0 ELSE C.CaseTime/CONVERT(DECIMAL(10,2),cw.daycount) END AS [Ø-CaseTime], CASE WHEN ISNULL(C.[Count],0) = 0 OR ISNULL(cw.daycount,0) = 0 THEN 0 ELSE Q.QactionTime/CONVERT(DECIMAL(10,2),cw.daycount) END AS [Ø-QactionTime], S.Date FROM TSessions AS S JOIN Result cw ON cw.Date = S.SessionDate and cw.Tagname = S.[Day] LEFT JOIN TCases AS C ON S.[Day] = C.[Day] AND S.Date = C.Date LEFT JOIN TQActions Q ON S.[Day] = Q.[Day] AND S.Date = Q.Date ') END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[vw_QAExecutionsCountByUser]') AND type in (N'V')) BEGIN PRINT N'start creating view [vw_QAExecutionsCountByUser]...'; EXEC(N'--@Revision:2 CREATE VIEW [dbo].[vw_QAExecutionsCountByUser] AS SELECT COUNT(QActionId) ExecutionCount, QActions.Id QActionId, ISNULL(QActions.[Name], N''N/A'') [Name], CAST(year(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5))) AS [Date], UserSessions.UserId , CASE WHEN muser.full_name IS NULL THEN N''User_''+LEFT(UserSessions.UserId,3) ELSE muser.full_name END FullName FROM dbo.QActionExecutions LEFT JOIN dbo.QActions ON QActions.Id = QActionExecutions.QActionId JOIN dbo.Cases ON Cases.CaseId = QActionExecutions.CaseId JOIN dbo.UserSessions ON UserSessions.SessionId = Cases.SessionId LEFT JOIN [$DatabaseHistory$].[dbo].[main-user] muser ON muser.id = UserSessions.UserId WHERE dbo.fn_GetLocalTimeStamp(QActionExecutions.start) >= DATEADD(MONTH, -12, GETDATE()) AND QActionExecutions.[Finish] IS NOT NULL GROUP BY QActions.Id, QActions.[Name] , CAST(year(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5))), UserSessions.UserId, CASE WHEN muser.full_name IS NULL THEN N''User_''+LEFT(UserSessions.UserId,3) ELSE muser.full_name END ') END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[vw_WeekdayCountsByMonth]') AND type in (N'V')) BEGIN PRINT N'start creating view [vw_WeekdayCountsByMonth]...'; EXEC(N'--@Revision:2 CREATE VIEW [dbo].[vw_WeekdayCountsByMonth] AS SELECT COUNT(*) AS DayCount, CAST(year(MinDate) AS NVARCHAR(10))+N''-''+ IIF(month(MinDate)<10,''0''+CAST(month(MinDate) AS NVARCHAR(5)),CAST(month(MinDate) AS NVARCHAR(5))) AS [Date], CAST(CAST(year(MinDate) AS NVARCHAR(10))+CAST(month(MinDate) AS NVARCHAR(5)) AS INT) AS [DateSort] FROM ( SELECT DATEADD(DAY, number, (SELECT MIN(dbo.fn_GetLocalTimeStamp(start)) FROM [dbo].[UserSessions] WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL)) AS MinDate FROM master.dbo.spt_values WHERE type = N''P'' AND number BETWEEN 1 AND DATEDIFF(DAY, (SELECT MIN(dbo.fn_GetLocalTimeStamp(start)) minDate FROM [dbo].[UserSessions] WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL), (SELECT max(dbo.fn_GetLocalTimeStamp(start)) maxDate FROM [dbo].[UserSessions])) ) AS date_series GROUP BY YEAR(MinDate) , MONTH(MinDate) ') END SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[UserSessions]') AND type in (N'U')) BEGIN PRINT N'start creating table [UserSessions]...'; CREATE TABLE [UserSessions]( [SessionId] [uniqueidentifier] NOT NULL, [UserId] [uniqueidentifier] NOT NULL, [Start] [datetime] NULL, [Finish] [datetime] NULL) PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Cases]') AND type in (N'U')) BEGIN PRINT N'start creating table [Cases]...'; CREATE TABLE [Cases]( [CaseId] [uniqueidentifier] NOT NULL, [Start] [datetime] NULL, [Finish] [datetime] NULL, [ActiveTime] [int] NULL, [UserId] [uniqueidentifier] NOT NULL, [SessionId] [uniqueidentifier] NOT NULL ) PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[CaseTime]') AND type in (N'U')) BEGIN PRINT N'start creating table [CaseTime]...'; CREATE TABLE [CaseTime]( [CaseId] [uniqueidentifier] NOT NULL, [StatusId] [int] NOT NULL, [TimeStamp] [datetime] NOT NULL, CONSTRAINT [PK_CaseTime] PRIMARY KEY CLUSTERED ( [StatusId] ASC, [TimeStamp] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Tickets]') AND type in (N'U')) BEGIN PRINT N'start creating table [Tickets]...'; CREATE TABLE [Tickets]( [TicketId] [uniqueidentifier] NOT NULL, [Status] [nvarchar](16) NOT NULL, [Start] [datetime] NULL, [Finish] [datetime] NULL, [ActiveTime] [int] NULL, [UserId] [uniqueidentifier] NOT NULL, [CaseId] [uniqueidentifier] NOT NULL ) PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[QActions]') AND type in (N'U')) BEGIN PRINT N'start creating table [QActions]...'; CREATE TABLE [QActions]( [Id] [uniqueidentifier] default newid() NOT NULL, [Name] [nvarchar](200) NOT NULL, [Type] [nvarchar](50) NULL, [TimeStamp] DateTime, CONSTRAINT [PK_QActions] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[QActionDescriptions]') AND type in (N'U')) BEGIN PRINT N'start creating table [QActionDescriptions]...'; CREATE TABLE [QActionDescriptions]( [QActionId] [uniqueidentifier] NOT NULL, [Description] [nvarchar](250) NULL, [LanguageCode] [nvarchar](10) NOT NULL, CONSTRAINT [PK_QActionDescriptions] PRIMARY KEY CLUSTERED ( [QActionId] ASC, [LanguageCode] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] ALTER TABLE [QActionDescriptions] WITH CHECK ADD CONSTRAINT [FK_QActionDescriptions_QActionId] FOREIGN KEY([QActionId]) REFERENCES [QActions] ([Id]) ALTER TABLE [QActionDescriptions] CHECK CONSTRAINT [FK_QActionDescriptions_QActionId] PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[QActionExecutions]') AND type in (N'U')) BEGIN PRINT N'start creating table [QActionExecutions]...'; CREATE TABLE [QActionExecutions]( [ExecutionId] [int] IDENTITY(1,1) NOT NULL, [CaseId] [uniqueidentifier] NOT NULL, [QActionId] [uniqueidentifier] NOT NULL, [DeviceId] [uniqueidentifier], [Start] [datetime] NOT NULL, [Finish] [datetime] NOT NULL, [Parameters] [nvarchar](max) NULL, [Result] [nvarchar](max) NULL, [ErrorCode] [int] NULL, [ErrorDescription] [nvarchar](max) NULL, [ResultType] [nvarchar](100), [ExecutionType] [nvarchar](100), CONSTRAINT [PK_ExecutionId] PRIMARY KEY CLUSTERED ( [ExecutionId] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] ALTER TABLE [QActionExecutions] WITH CHECK ADD CONSTRAINT [FK_QActionExecutions_QActionId] FOREIGN KEY([QActionId]) REFERENCES [QActions] ([Id]) PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Status]') AND type in (N'U')) BEGIN PRINT N'start creating table [Status]...'; CREATE TABLE [Status]( [Id] [int] NOT NULL, [Name] [nvarchar](100) NOT NULL, CONSTRAINT [PK_Status] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] PRINT N' ...done.'; END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[StatusDescriptions]') AND type in (N'U')) BEGIN PRINT N'start creating table [StatusDescriptions]...'; CREATE TABLE [StatusDescriptions]( [StatusId] [int] NOT NULL, [Description] [nvarchar](50) NULL, [LanguageCode] [nvarchar](10) NOT NULL, CONSTRAINT [PK_StatusDescriptions] PRIMARY KEY CLUSTERED ( [StatusId] ASC, [LanguageCode] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] ALTER TABLE [StatusDescriptions] WITH CHECK ADD CONSTRAINT [FK_StatusDescriptions_StatusId] FOREIGN KEY([StatusId]) REFERENCES [Status] ([Id]) ALTER TABLE [StatusDescriptions] CHECK CONSTRAINT [FK_StatusDescriptions_StatusId] PRINT N' ...done.'; END IF NOT EXISTS (SELECT TOP 1 * FROM [status]) BEGIN PRINT N'start fill tables [Status] and [StatusDescriptions]...'; INSERT INTO [Status] ([Id],[Name]) VALUES (1, 'Start'), (2, 'Hold'), (3, 'Continue'), (4, 'Cancel'), (5, 'Finish') INSERT INTO [StatusDescriptions] ([StatusId] ,[Description] ,[LanguageCode]) VALUES (1, 'Starten','DE'), (1, 'Start', N'EN'), (2, 'Pause','DE'), (2, 'Hold', N'EN'), (3, 'Continue','DE'), (3, 'Fortsetzen', N'EN'), (4, 'Cancel','DE'), (4, 'Abbrechen', N'EN'), (5, 'Finish','DE'), (5, 'Beenden', N'EN') PRINT N' ...done.'; CREATE NONCLUSTERED INDEX [IX_UserSession_SessionId] ON [UserSessions] ([SessionId] ASC) INCLUDE([UserId]) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [IX_Cases_CaseId] ON [Cases] ([CaseId] ASC) INCLUDE(SessionId) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [IX_CaseTime_CaseId] ON [CaseTime] ([CaseId] ASC) INCLUDE(StatusId) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [IX_QActionExecutions_ExecutionId_CaseId] ON [QActionExecutions] ([ExecutionId],[CaseId] ASC) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [IX_Tickets_TicketId_CaseId] ON [dbo].[Cases] ([TicketId] ASC, [CaseId] ASC) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; END DECLARE @cnt INT SET @cnt = 0 IF NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'QActionExecutions' AND Column_Name = 'DeviceId') BEGIN ALTER TABLE QActionExecutions ADD [DeviceId] [uniqueidentifier] SET @cnt = @cnt+1; PRINT N'... done.' END IF NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'QActionExecutions' AND Column_Name = 'ResultType') BEGIN ALTER TABLE QActionExecutions ADD [ResultType] [nvarchar](100) SET @cnt = @cnt+1; PRINT N'... done.' END IF NOT EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'QActionExecutions' AND Column_Name = 'ExecutionType') BEGIN ALTER TABLE QActionExecutions ADD [ExecutionType] [nvarchar](100) SET @cnt = @cnt+1; PRINT N'... done.' END IF EXISTS (SELECT 1 FROM sys.objects WHERE name = 'FK_CasesTime_CaseId' AND type='F') BEGIN ALTER TABLE CaseTime DROP CONSTRAINT FK_CasesTime_CaseId SET @cnt = @cnt+1; PRINT N'... done.' END IF EXISTS (SELECT 1 FROM sys.objects WHERE name = 'FK_Cases_SessionId' AND type='F') BEGIN ALTER TABLE Cases DROP CONSTRAINT FK_Cases_SessionId SET @cnt = @cnt+1; PRINT N'... done.' END IF EXISTS (SELECT 1 FROM sys.objects WHERE name = 'FK_QActionsExecutions_CaseId' AND type='F') BEGIN ALTER TABLE QActionExecutions DROP CONSTRAINT FK_QActionsExecutions_CaseId SET @cnt = @cnt+1; PRINT N'... done.' END IF EXISTS (SELECT 1 FROM sys.objects WHERE name = 'PK_SessionId' AND type='PK') BEGIN ALTER TABLE UserSessions DROP CONSTRAINT PK_SessionId SET @cnt = @cnt+1; PRINT N'... done.' END IF EXISTS (SELECT 1 FROM sys.objects WHERE name = 'PK_CaseId' AND type='PK') BEGIN ALTER TABLE Cases DROP CONSTRAINT PK_CaseId SET @cnt = @cnt+1; PRINT N'... done.' END IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_UserSession_SessionId') BEGIN CREATE NONCLUSTERED INDEX [IX_UserSession_SessionId] ON [UserSessions] ([SessionId] ASC) INCLUDE([UserId]) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; SET @cnt = @cnt+1; PRINT N'... done.' END IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_Cases_CaseId') BEGIN CREATE NONCLUSTERED INDEX [IX_Cases_CaseId] ON [Cases] ([CaseId] ASC) INCLUDE(SessionId) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; SET @cnt = @cnt+1; PRINT N'... done.' END IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_CaseTime_CaseId') BEGIN CREATE NONCLUSTERED INDEX [IX_CaseTime_CaseId] ON [CaseTime] ([CaseId] ASC) INCLUDE(StatusId) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; SET @cnt = @cnt+1; PRINT N'... done.' END IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_CaseTime_CaseId') BEGIN CREATE NONCLUSTERED INDEX [IX_QActionExecutions_ExecutionId_CaseId] ON [QActionExecutions] ([ExecutionId],[CaseId] ASC) WITH (DROP_EXISTING = OFF) ON [PRIMARY]; SET @cnt = @cnt+1; PRINT N'... done.' END SELECT @cnt DECLARE @cnt INT SET @cnt = 0 IF ( IIF((SELECT CHARINDEX('@Revision',(SELECT definition FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_UserStatistics') AND o.type = 'V')) ) = 0 , 0 , CAST(LTRIM(RTRIM((select REPLACE(REPLACE(REPLACE(REPLACE(LEFT(REPLACE(definition,'--@Revision:',''),3),' ',''),CHAR(9), ''), CHAR(10), ''), CHAR(13), '') FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_UserStatistics') AND o.type = 'V'))) AS INT)) < 3) BEGIN EXEC(N'--@Revision:2 ALTER VIEW [dbo].[vw_UserStatistics] AS WITH UserSessions AS ( SELECT UserId , COUNT(SessionID) SessionCount, SUM(DATEDIFF(minute, UserSessions.Start, UserSessions.Finish)) [ActiveTime], SUM(DATEDIFF(minute, UserSessions.Start, UserSessions.Finish)) / COUNT(UserSessions.SessionId) [Ø-Time], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date], CAST(CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)) AS INT) AS [DateSort] FROM dbo.UserSessions WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) GROUP BY UserId, CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))), CAST(CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)) AS INT) ), UserCases AS ( SELECT UserSessions.UserId UserId, COUNT(CaseId) CaseCount, SUM(Cases.ActiveTime) ActiveTime, SUM(Cases.ActiveTime) / COUNT(CaseId) [Ø-Time], CAST(year(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(Cases.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(5))) AS [Date] FROM dbo.UserSessions JOIN dbo.Cases ON UserSessions.SessionId = Cases.SessionId WHERE dbo.fn_GetLocalTimeStamp(Cases.start) >= DATEADD(MONTH, -12, GETDATE()) AND Cases.[Finish] IS NOT NULL GROUP BY UserSessions.UserId, CAST(year(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(Cases.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(Cases.start)) AS NVARCHAR(5))) ), UserQActions AS ( SELECT UserSessions.UserId UserId, COUNT(ExecutionId) ExecutionCount, CONVERT(DECIMAL ( 10,1 ),SUM(DATEDIFF(SECOND, QActionExecutions.Start, QActionExecutions.Finish))) / CONVERT(DECIMAL ( 10,1 ),COUNT(QActionId)) [Ø-Time], SUM(DATEDIFF(SECOND, QActionExecutions.Start, QActionExecutions.Finish)) ActiveTime, CAST(year(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5))) AS [Date] FROM dbo.UserSessions JOIN dbo.Cases ON UserSessions.SessionId = Cases.SessionId JOIN dbo.QActionExecutions ON QActionExecutions.CaseId = Cases.CaseId WHERE dbo.fn_GetLocalTimeStamp(QActionExecutions.start) >= DATEADD(MONTH, -12, GETDATE()) AND QActionExecutions.[Finish] IS NOT NULL GROUP BY UserSessions.UserId, CAST(year(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5))) ) SELECT US.UserId UserId, CASE WHEN muser.full_name IS NULL THEN N''User_''+LEFT(US.UserId,3) ELSE muser.full_name END FullName, US.Date, US.DateSort, US.SessionCount, US.ActiveTime SessionActiveTime, US.[Ø-Time] [Ø-SessionTime], ISNULL(Uc.CaseCount,0) CaseCount, ISNULL(UC.ActiveTime,0) CaseActiveTime, ISNULL(UC.[Ø-Time],0) [Ø-CaseTime] , ISNULL(UQA.ExecutionCount,0) QACount, ISNULL(UQA.ActiveTime,0) QAActiveTime, ISNULL(UQA.[Ø-Time],0) [Ø-QATime], IIF(Uc.CaseCount IS NOT NULL, CONVERT(DECIMAL ( 10,1 ),Uc.CaseCount) /CONVERT(DECIMAL ( 10,1 ),US.SessionCount),0) [Ø-Cases In Session] FROM UserSessions AS US LEFT JOIN UserCases UC ON US.UserId = UC.UserId AND US.Date = UC.Date LEFT JOIN UserQActions UQA ON US.UserId = UQA.UserId AND US.Date = UQA.Date LEFT JOIN [$DatabaseHistory$].[dbo].[main-user] muser ON muser.id = US.UserId ') SET @cnt = @cnt+1; PRINT N'... done.' END IF ( IIF((SELECT CHARINDEX('@Revision',(SELECT definition FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_DailyHourlyStatistic') AND o.type = 'V')) ) = 0 , 0 , CAST(LTRIM(RTRIM((select REPLACE(REPLACE(REPLACE(REPLACE(LEFT(REPLACE(definition,'--@Revision:',''),3),' ',''),CHAR(9), ''), CHAR(10), ''), CHAR(13), '') FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_DailyHourlyStatistic') AND o.type = 'V'))) AS INT)) < 3) BEGIN EXEC(N'--@Revision:2 ALTER VIEW [dbo].[vw_DailyHourlyStatistic] AS WITH TSessions AS ( SELECT dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], dbo.fn_GetHourIntervalFromTimestamp(start) AS [HourInterval], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date] FROM UserSessions WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN''), dbo.fn_GetHourIntervalFromTimestamp(start), CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ), TCases AS ( SELECT COUNT(CaseId) [Count], dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], dbo.fn_GetHourIntervalFromTimestamp(start) AS [HourInterval], SUM(ActiveTime) CaseTime, CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date] FROM dbo.Cases WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN''), dbo.fn_GetHourIntervalFromTimestamp(start), CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ), TQActions AS ( SELECT COUNT(QActionExecutions.ExecutionId) [Count], dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], dbo.fn_GetHourIntervalFromTimestamp(start) AS [HourInterval], SUM(DATEDIFF(second,start,Finish)) AS QATime, CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date] FROM QActionExecutions WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN'') , dbo.fn_GetHourIntervalFromTimestamp(start), CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ) SELECT S.[Day], S.HourInterval, ISNULL(C.[Count],0) CaseCount, ISNULL(Q.[Count],0) QactionCount, C.CaseTime, Q.QATime, CASE WHEN ISNULL(Q.[Count],0) = 0 OR ISNULL(C.[Count],0) = 0 THEN 0 ELSE CONVERT(DECIMAL(10,2),ISNULL(Q.[Count],0))/CONVERT(DECIMAL(10,2),ISNULL(C.[Count],0)) END QactionCountinCases, S.Date FROM TSessions AS S LEFT JOIN TCases AS C ON S.[Day] = C.[Day] AND S.HourInterval = C.HourInterval AND S.Date = C.Date LEFT JOIN TQActions Q ON S.[Day] = Q.[Day] AND S.HourInterval = Q.HourInterval AND S.Date = Q.Date ') SET @cnt = @cnt+1; PRINT N'... done.' END IF ( IIF((SELECT CHARINDEX('@Revision',(SELECT definition FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_DailyStatistic') AND o.type = 'V')) ) = 0 , 0 , CAST(LTRIM(RTRIM((select REPLACE(REPLACE(REPLACE(REPLACE(LEFT(REPLACE(definition,'--@Revision:',''),3),' ',''),CHAR(9), ''), CHAR(10), ''), CHAR(13), '') FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_DailyStatistic') AND o.type = 'V'))) AS INT)) < 3) BEGIN EXEC(N'--@Revision:2 ALTER VIEW [dbo].[vw_DailyStatistic] AS WITH TSessions AS ( SELECT dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)) AS [SessionDate], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date] FROM UserSessions with(nolock) WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) ), TCases AS ( SELECT COUNT(CaseId) [Count], dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date], SUM(Cases.ActiveTime) CaseTime FROM dbo.Cases with(nolock) WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN''), CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ), TQActions AS ( SELECT COUNT(QActionExecutions.ExecutionId) [Count], dbo.fn_GetDayFromTimestamp(start,N''EN'') AS [Day], CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) AS [Date], SUM(DATEDIFF(SECOND,start,Finish)) QactionTime FROM QActionExecutions with(nolock) WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL GROUP BY dbo.fn_GetDayFromTimestamp(start,N''EN'') , CAST(year(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(start)) AS NVARCHAR(5))) ), TMinMax as ( SELECT MIN(dbo.fn_GetLocalTimeStamp(start)) minDate, max(dbo.fn_GetLocalTimeStamp(start)) maxDate FROM [dbo].[UserSessions] with(nolock) ),DateList AS ( SELECT DATEADD(DAY, number, (SELECT minDate from TMinMax)) AS CurrentDate FROM master.dbo.spt_values WHERE type = ''P'' AND number BETWEEN 0 AND DATEDIFF(DAY, (SELECT minDate from TMinMax), (SELECT maxDate from TMinMax)) ), Result AS ( SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 2 THEN 1 ELSE 0 END) AS DayCount, N''1-Monday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 3 THEN 1 ELSE 0 END) AS DayCount, N''2-Tuesday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 4 THEN 1 ELSE 0 END) AS DayCount, N''3-Wednesday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 5 THEN 1 ELSE 0 END) AS DayCount, N''4-Thursday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 6 THEN 1 ELSE 0 END) AS DayCount, N''5-Friday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 7 THEN 1 ELSE 0 END) AS DayCount, N''6-Saturday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) UNION ALL SELECT CAST(year(CurrentDate) AS NVARCHAR(10))+N''-''+ CAST(month(CurrentDate) AS NVARCHAR(5)) AS [Date], SUM(CASE WHEN DATEPART(WEEKDAY, CurrentDate) = 1 THEN 1 ELSE 0 END) AS DayCount, N''7-Sunday'' AS Tagname FROM DateList WHERE CurrentDate >= DATEADD(MONTH, -12, GETDATE()) GROUP BY DATEPART(MONTH, CurrentDate), DATEPART(YEAR, CurrentDate) ) SELECT DISTINCT S.[Day], CASE WHEN ISNULL(C.[Count],0) = 0 OR ISNULL(cw.daycount,0) = 0 THEN 0 ELSE CONVERT(DECIMAL(10,2),C.[Count])/CONVERT(DECIMAL(10,2),cw.daycount) END AS [Ø-CaseCount], CASE WHEN ISNULL(Q.[Count],0) = 0 OR ISNULL(cw.daycount,0) = 0 THEN 0 ELSE CONVERT(DECIMAL(10,2),Q.[Count])/CONVERT(DECIMAL(10,2),cw.daycount) END AS [Ø-QactionCount], ISNULL(C.[Count],0) CaseCount, ISNULL(Q.[Count],0) QactionCount, CASE WHEN ISNULL(Q.[Count],0) = 0 OR ISNULL(C.[Count],0) = 0 THEN 0 ELSE CONVERT(DECIMAL(10,2),ISNULL(Q.[Count],0))/CONVERT(DECIMAL(10,2),ISNULL(C.[Count],0)) END QactionCountinCases, CASE WHEN ISNULL(C.[Count],0) = 0 OR ISNULL(cw.daycount,0) = 0 THEN 0 ELSE C.CaseTime/CONVERT(DECIMAL(10,2),cw.daycount) END AS [Ø-CaseTime], CASE WHEN ISNULL(C.[Count],0) = 0 OR ISNULL(cw.daycount,0) = 0 THEN 0 ELSE Q.QactionTime/CONVERT(DECIMAL(10,2),cw.daycount) END AS [Ø-QactionTime], S.Date FROM TSessions AS S JOIN Result cw ON cw.Date = S.SessionDate and cw.Tagname = S.[Day] LEFT JOIN TCases AS C ON S.[Day] = C.[Day] AND S.Date = C.Date LEFT JOIN TQActions Q ON S.[Day] = Q.[Day] AND S.Date = Q.Date ') SET @cnt = @cnt+1; PRINT N'... done.' END IF ( IIF((SELECT CHARINDEX('@Revision',(SELECT definition FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_QAExecutionsCountByUser') AND o.type = 'V')) ) = 0 , 0 , CAST(LTRIM(RTRIM((select REPLACE(REPLACE(REPLACE(REPLACE(LEFT(REPLACE(definition,'--@Revision:',''),3),' ',''),CHAR(9), ''), CHAR(10), ''), CHAR(13), '') FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_QAExecutionsCountByUser') AND o.type = 'V'))) AS INT)) < 3) BEGIN EXEC(N'--@Revision:2 ALTER VIEW [dbo].[vw_QAExecutionsCountByUser] AS SELECT COUNT(QActionId) ExecutionCount, QActions.Id QActionId, ISNULL(QActions.[Name], N''N/A'') [Name], CAST(year(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5))) AS [Date], UserSessions.UserId , CASE WHEN muser.full_name IS NULL THEN N''User_''+LEFT(UserSessions.UserId,3) ELSE muser.full_name END FullName FROM dbo.QActionExecutions LEFT JOIN dbo.QActions ON QActions.Id = QActionExecutions.QActionId JOIN dbo.Cases ON Cases.CaseId = QActionExecutions.CaseId JOIN dbo.UserSessions ON UserSessions.SessionId = Cases.SessionId LEFT JOIN [$DatabaseHistory$].[dbo].[main-user] muser ON muser.id = UserSessions.UserId WHERE dbo.fn_GetLocalTimeStamp(QActionExecutions.start) >= DATEADD(MONTH, -12, GETDATE()) AND QActionExecutions.[Finish] IS NOT NULL GROUP BY QActions.Id, QActions.[Name] , CAST(year(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(10))+N''-''+ IIF(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start))<10,''0''+CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5)),CAST(month(dbo.fn_GetLocalTimeStamp(QActionExecutions.start)) AS NVARCHAR(5))), UserSessions.UserId, CASE WHEN muser.full_name IS NULL THEN N''User_''+LEFT(UserSessions.UserId,3) ELSE muser.full_name END ') SET @cnt = @cnt+1; PRINT N'... done.' END IF ( IIF((SELECT CHARINDEX('@Revision',(SELECT definition FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_WeekdayCountsByMonth') AND o.type = 'V')) ) = 0 , 0 , CAST(LTRIM(RTRIM((select REPLACE(REPLACE(REPLACE(REPLACE(LEFT(REPLACE(definition,'--@Revision:',''),3),' ',''),CHAR(9), ''), CHAR(10), ''), CHAR(13), '') FROM sys.objects o JOIN sys.sql_modules m on m.object_id = o.object_id WHERE o.object_id = object_id( 'vw_WeekdayCountsByMonth') AND o.type = 'V'))) AS INT)) < 3) BEGIN EXEC(N'--@Revision:2 ALTER VIEW [dbo].[vw_WeekdayCountsByMonth] AS SELECT COUNT(*) AS DayCount, CAST(year(MinDate) AS NVARCHAR(10))+N''-''+ IIF(month(MinDate)<10,''0''+CAST(month(MinDate) AS NVARCHAR(5)),CAST(month(MinDate) AS NVARCHAR(5))) AS [Date], CAST(CAST(year(MinDate) AS NVARCHAR(10))+CAST(month(MinDate) AS NVARCHAR(5)) AS INT) AS [DateSort] FROM ( SELECT DATEADD(DAY, number, (SELECT MIN(dbo.fn_GetLocalTimeStamp(start)) FROM [dbo].[UserSessions] WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL)) AS MinDate FROM master.dbo.spt_values WHERE type = N''P'' AND number BETWEEN 1 AND DATEDIFF(DAY, (SELECT MIN(dbo.fn_GetLocalTimeStamp(start)) minDate FROM [dbo].[UserSessions] WHERE dbo.fn_GetLocalTimeStamp(start) >= DATEADD(MONTH, -12, GETDATE()) AND [Finish] IS NOT NULL), (SELECT max(dbo.fn_GetLocalTimeStamp(start)) maxDate FROM [dbo].[UserSessions])) ) AS date_series GROUP BY YEAR(MinDate) , MONTH(MinDate) ') SET @cnt = @cnt+1; PRINT N'... done.' END SELECT @cnt DECLARE @CurrentTimeStamp DATETIME = GETUTCDATE(); INSERT INTO [Cases] ( CaseId, UserId, SessionId, [Start] ) SELECT @CaseId, @UserId, @SessionId, @CurrentTimeStamp; IF @@RowCount = 1 BEGIN INSERT INTO [CaseTime] ( CaseId, StatusId, [TimeStamp] ) SELECT @CaseId, 1, @CurrentTimeStamp; END DECLARE @CurrentTimeStamp DATETIME = GETUTCDATE(); DECLARE @Status XML = @StatusXML; INSERT INTO [CaseTime] ( CaseId, StatusId, [TimeStamp] ) SELECT @CaseId, @StatusId, @CurrentTimeStamp; INSERT INTO [CaseTime] (CaseId, StatusId,[TimeStamp]) SELECT @CaseId, Item.value('(StatusId/text())[1]', 'int') AS StatusId, Item.value('(TimeStamp/text())[1]', 'DateTime') AS [TimeStamp] FROM @Status.nodes('/Root/Item') AS A(Item); IF @StatusID IN (4,5) BEGIN UPDATE [Cases] SET [Finish] = @CurrentTimeStamp, ActiveTime = @ActiveTime WHERE CaseId = @CaseId; END INSERT INTO [UserSessions] ( UserId, SessionId, [Start]) SELECT @UserId, @SessionId, @SessionDate ; IF EXISTS (SELECT TOP 1 * FROM UserSessions WHERE SessionId = @SessionId) BEGIN UPDATE [UserSessions] SET [Finish] = @SessionDate WHERE SessionId = @SessionId; END IF NOT EXISTS (SELECT TOP 1 * FROM UserSessions WHERE SessionId = @SessionId) AND EXISTS (SELECT TOP 1 * FROM dbo.Cases WHERE SessionId = @SessionId) BEGIN DECLARE @CurrentTimeStamp DATETIME = GETUTCDATE(); INSERT INTO UserSessions ( UserId, SessionId, [Start], [Finish] ) SELECT TOP 1 UserId,SessionId,[Start],@CurrentTimeStamp FROM Cases WHERE SessionId = @SessionId ORDER BY [Start] ASC; END IF EXISTS (SELECT TOP 1 * FROM dbo.Cases WHERE SessionId = @SessionId) BEGIN INSERT INTO [CaseTime] ( CaseId, StatusId, [TimeStamp] ) SELECT CaseId, 4, @SessionDate FROM dbo.Cases WHERE SessionId = @SessionId AND Finish IS NULL; UPDATE [Cases] SET [Finish] = @SessionDate WHERE SessionId = @SessionId AND Finish IS NULL; END DECLARE @CurrentTimeStamp DATETIME = GETUTCDATE(); IF EXISTS (SELECT TOP 1 * FROM dbo.Cases JOIN dbo.CaseTime ON Cases.CaseId = CaseTime.CaseId WHERE Cases.CaseId = @CaseId AND CaseTime.StatusId = 4 ) BEGIN UPDATE [CaseTime] SET Statusid = 2 FROM dbo.Cases JOIN dbo.CaseTime ON Cases.CaseId = CaseTime.CaseId WHERE Cases.CaseId = @CaseId AND CaseTime.StatusId = 4 INSERT INTO [CaseTime] ( CaseId, StatusId, [TimeStamp] ) SELECT @CaseId, 3, @CurrentTimeStamp; UPDATE [Cases] SET [Finish] = NULL WHERE CaseId = @CaseId; END IF NOT EXISTS (SELECT [TicketId], [UserId],[CaseId],[Status],[Start], [Finish],ActiveTime FROM [Tickets] WHERE [TicketId] = @TicketId AND [UserId] = @UserId AND [CaseId] = @CaseId AND [Status] = @Status AND [Start] = @Start AND [Finish] = @Finish AND ActiveTime = @ActiveTime ) BEGIN INSERT INTO [Tickets] ([TicketId], [UserId],[CaseId],[Status],[Start], [Finish],ActiveTime) SELECT @TicketId,@UserId,@CaseId,@Status,@Start,@Finish,@ActiveTime; END INSERT INTO [QActionExecutions] ([CaseId],[QActionId],[DeviceId],[Start],[Finish],[Parameters],[Result],[ErrorCode],[ErrorDescription],[ExecutionType],[ResultType]) SELECT @CaseId,@QActionId,@DeviceId,@Start,@Finish,@Parameters,@Result,@ErrorCode,@ErrorDescription, ISNULL(@ExecutionType, 'Undefined'), ISNULL(@ResultType, 'Undefined') INSERT INTO [main-computer-quickaction] ([UserId],[QActionId],[QActionName],[DeviceId],[Start],[Finish],[Parameters],[Result],[ErrorCode],[ErrorDescription],[ExecutionType],[ResultType]) SELECT @UserId,@QActionId,@QActionName,@DeviceId,@Start,@Finish,@Parameters,@Result,@ErrorCode,@ErrorDescription, ISNULL(@ExecutionType, 'Undefined'), ISNULL(@ResultType, 'Undefined') UPDATE [QActions] SET [Name]=@Name, [Type]=@Type WHERE [Id]=@Id IF @@ROWCOUNT = 0 INSERT INTO [QActions] ([Id], [Name], [Type]) VALUES (@Id, @Name, @Type) SELECT @@ROWCOUNT UPDATE [QActionDescriptions] SET [Description]=@Name WHERE [QActionId]=@Id AND [LanguageCode]=@Lang IF @@ROWCOUNT = 0 INSERT INTO [QActionDescriptions] ([QActionId], [Description], [LanguageCode]) VALUES (@Id, @Name, @Lang) SELECT @@ROWCOUNT UPDATE [main-config] SET [Value]=@Value WHERE [Key]=@Key IF @@ROWCOUNT = 0 INSERT INTO [main-config] ([Key], [Value]) VALUES (@Key, @Value) SELECT @@ROWCOUNT SELECT [Key],[Value] FROM [main-config] SELECT [id],[type],[name],[name2],[secret],[validUntil],[renewUntil] FROM [main-user-tokens] DELETE FROM [main-user-tokens] WHERE [validUntil] < @ValidUntil UPDATE [main-user-tokens] SET [name]=@Name, [name2]=@Name2, [secret]=@Secret, [validUntil]=@ValidUntil, [renewUntil]=@RenewUntil WHERE [id]=@Id AND [type]=@Type IF @@ROWCOUNT = 0 INSERT INTO [main-user-tokens] ([id], [type], [name], [name2], [secret], [validUntil], [renewUntil]) VALUES (@Id, @Type, @Name, @Name2, @Secret, @ValidUntil, @RenewUntil) SELECT @@ROWCOUNT SELECT [id],[last_seen_by_agent] FROM [main-computer] WHERE [deviceId_azure]=@AZURE_ID UPDATE [main-vitalSignMonitoring-All] SET [TimeStamp]=@TimeStamp, [DiffToAgent]=@DiffToAgent, [UserName]=@UserName WHERE [DeviceId]=@Id AND [EventId]=1 IF @@ROWCOUNT = 0 INSERT INTO [main-vitalSignMonitoring-All] ([DeviceId], [EventId], [TimeStamp], [DiffToAgent], [UserName]) VALUES (@Id, 1, @TimeStamp, @DiffToAgent,@UserName) SELECT @@ROWCOUNT UPDATE [main-vitalSignMonitoring-Intune] SET [name]=@name, [AzureID]=@AzureID, [UserName]=@UserName, [TimeStamp]=@TimeStamp WHERE [TenantID]=@TenantId AND [IntuneID]=@IntuneId AND [EventId]=1 IF @@ROWCOUNT = 0 INSERT INTO [main-vitalSignMonitoring-Intune] ([TenantID], [IntuneID], [EventId], [name], [AzureID], [UserName], [TimeStamp]) VALUES (@TenantId, @IntuneId, 1, @name, @AzureID, @UserName, @TimeStamp) SELECT @@ROWCOUNT