2539 lines
131 KiB
XML
2539 lines
131 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<DataHistorySql>
|
||
<Queries>
|
||
<Query Name="Validate_Database">
|
||
SELECT COUNT(*) FROM master.dbo.sysdatabases WHERE [name] = @DbName
|
||
</Query>
|
||
<Query Name="Create_Database">
|
||
CREATE DATABASE [{0}] COLLATE Latin1_General_CI_AI;
|
||
ALTER DATABASE [{0}] SET RECOVERY SIMPLE;
|
||
</Query>
|
||
<Query Name="Validate_Fulltext_Installed">
|
||
SELECT FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')
|
||
</Query>
|
||
<Query Name="Validate_Fulltext">
|
||
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()
|
||
</Query>
|
||
<Query Name="Validate_DbCollation">
|
||
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'
|
||
</Query>
|
||
<Query Name="Validate_MainTables">
|
||
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')
|
||
</Query>
|
||
<Query Name="Create_MainTables">
|
||
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 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
|
||
|
||
</Query>
|
||
<Query Name="Validate_AdScanTables">
|
||
SELECT 1 WHERE (OBJECT_ID(N'adscan-info', N'U') IS NOT NULL) AND (OBJECT_ID(N'adscan-nodes', N'U') IS NOT NULL)
|
||
</Query>
|
||
<Query Name="Create_AdScanTables">
|
||
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
|
||
</Query>
|
||
<Query Name="ValidateDailyAgentEventTables">
|
||
SELECT COUNT(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[c4it_event_mapping]') AND type in (N'U')
|
||
</Query>
|
||
<Query Name="ValidateOverallAgentEventTables">
|
||
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')
|
||
</Query>
|
||
<Query Name="GetDbTablesVersion">
|
||
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] );
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.1">
|
||
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 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
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.2">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.3">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.4">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.5">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.6">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.7">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.8">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateDbTablesV1.9">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateDbVersion">
|
||
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);
|
||
</Query>
|
||
<Query Name="GetTableColumnValidation">
|
||
SELECT [Column] FROM [main-column-validation] WHERE [Table] = @Table AND [Instance] = @Instance AND [isValid] = 1
|
||
</Query>
|
||
<Query Name="GetTableColumnValidationEx">
|
||
SELECT [Column], [isValid] FROM [main-column-validation] WHERE [Table] = @Table AND [Instance] = @Instance
|
||
</Query>
|
||
<Query Name="InsertTableColumnValidation">
|
||
INSERT INTO [main-column-validation] ([Table] [Instance], [Column], [isValid]) VALUES (@Table, @Instance, @Column, @isValid)
|
||
</Query>
|
||
<Query Name="UpdateTableColumnValidation">
|
||
UPDATE [main-column-validation] SET [isValid] = @isValid WHERE [Table] = @Table AND [Instance] = @Instance AND [Column] = @Column
|
||
</Query>
|
||
<Query Name="DeleteTableColumnValidation">
|
||
DELETE FROM [main-column-validation] WHERE [Table] = @Table AND [Instance] = @Instance AND [Column] = @Column
|
||
</Query>
|
||
<Query Name="CheckAndCreateTableColumn">
|
||
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
|
||
</Query>
|
||
<Query Name="CheckScanIdTableColumn">
|
||
SELECT COUNT(*) FROM (SELECT * FROM Information_Schema.Columns WHERE Table_Name = '{0}' AND Column_Name = 'ScanId') t
|
||
</Query>
|
||
<Query Name="PostColumnCreateActiveDirectory">
|
||
UPDATE [adscan-nodes] SET [last_usn] = NULL
|
||
</Query>
|
||
<Query Name="AgentDbUpdate001" Description="Check & create Agent DB index for event table (account)">
|
||
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
|
||
</Query>
|
||
<Query Name="AgentDbUpdate002" Description="Check & create Agent DB index for event table (device)">
|
||
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
|
||
</Query>
|
||
<Query Name="AgentDbUpdate003" Description="Check & create Agent DB index for event data table (device)">
|
||
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
|
||
</Query>
|
||
<Query Name="AgentDbUpdate004" Description="Check & create Agent DB index for device attribute table (device)">
|
||
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
|
||
</Query>
|
||
<Query Name="GetDailyAgentEventTables">
|
||
SELECT [from],[to], [eventtable], [eventdatatable], [eventdeviceactivitytable], [eventuseractivitytable] FROM [c4it_event_mapping] WHERE [orgcode]=@ORGCODE ORDER BY [to]
|
||
</Query>
|
||
<Query Name="GetLastScanTime">
|
||
SELECT [LastTime] FROM [main-scans] WHERE [Scan] = @Name
|
||
</Query>
|
||
<Query Name="SetLastScanTime">
|
||
UPDATE [main-scans] SET [LastTime]=@LastTime WHERE [Scan]=@Name
|
||
IF @@ROWCOUNT = 0 INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES (@Name, @LastTime)
|
||
SELECT @@ROWCOUNT
|
||
</Query>
|
||
<Query Name="GetAdScanInfo">
|
||
SELECT [id], [name], [last_run] FROM [adscan-info]
|
||
</Query>
|
||
<Query Name="RemoveAdScanInfo">
|
||
DELETE FROM [adscan-info] WHERE [id]=@ID
|
||
</Query>
|
||
<Query Name="UpdateAdScanDomains">
|
||
UPDATE [adscan-domains] SET [domainNB] = @domainNB WHERE [domainDns] = @domainDns
|
||
IF @@ROWCOUNT = 0
|
||
INSERT INTO [adscan-domains] ([domainDns], [domainNB]) VALUES (@domainDns, @domainNB)
|
||
</Query>
|
||
<Query Name="GetAdScanDomains">
|
||
SELECT [domainDns], [domainNB] FROM [adscan-domains]
|
||
</Query>
|
||
<Query Name="UpdateAdScanInfo">
|
||
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]
|
||
</Query>
|
||
<Query Name="GetAdScanNodes">
|
||
SELECT [id_scan], [name], [fingerprint], [invocation_id], [last_usn] FROM [adscan-nodes] WHERE [id_scan]=@ScanID
|
||
</Query>
|
||
<Query Name="UpdateAdScanNode">
|
||
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)
|
||
</Query>
|
||
<Query Name="SearchFulltext">
|
||
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]
|
||
</Query>
|
||
<Query Name="SearchFulltextWithDelay">
|
||
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]
|
||
</Query>
|
||
<Query Name="SearchFulltextRev">
|
||
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]
|
||
</Query>
|
||
<Query Name="SearchByField">
|
||
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]
|
||
</Query>
|
||
<Query Name="SearchByFieldRev">
|
||
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]
|
||
</Query>
|
||
<Query Name="SearchComputerByName">
|
||
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]
|
||
</Query>
|
||
<Query Name="SearchComputerByNameAndDomain">
|
||
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]
|
||
</Query>
|
||
<Query Name="SearchUserBySid">
|
||
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]
|
||
</Query>
|
||
<Query Name="SearchUserByAzureIdDevelop">
|
||
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]
|
||
</Query>
|
||
<Query Name="GetActivityPeriods">
|
||
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]
|
||
</Query>
|
||
<Query Name="GetAgentDevicesTotal">
|
||
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]
|
||
</Query>
|
||
<Query Name="GetAgentDevicesDaily">
|
||
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])
|
||
</Query>
|
||
<Query Name="GetAgentAccountsTotal">
|
||
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]
|
||
</Query>
|
||
<Query Name="GetAgentAccountsDaily">
|
||
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]
|
||
</Query>
|
||
<Query Name="InsertAgentDevice">
|
||
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)
|
||
</Query>
|
||
<Query Name="RemoveClientsWithoutID">
|
||
DELETE FROM [main-computer] WHERE id_agent IS NULL
|
||
</Query>
|
||
<Query Name="UpdateMainComputerLdap">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateComputerAzure">
|
||
UPDATE [main-computer] SET [id_azure]=@id, [deviceid_azure]=@deviceid, tenant_azure = @tenant WHERE [sid_bin]=@sid_bin
|
||
</Query>
|
||
<Query Name="UpdateComputerIntune">
|
||
UPDATE [main-computer] SET [id_intune]=@id WHERE [deviceId_azure]=@deviceId
|
||
</Query>
|
||
<Query Name="UpdateComputerIntune2">
|
||
UPDATE [main-computer] SET [id_intune]=@id, [deviceid_azure]=@deviceid, tenant_azure = @tenant WHERE upn_internal = @upn_internal and [domainNB] is null
|
||
</Query>
|
||
<Query Name="UpdateUserCitrix">
|
||
UPDATE [main-user] SET [id_citrix]=@id WHERE [sid_bin]=@sid_bin
|
||
</Query>
|
||
<Query Name="UpdateUserCitrix2">
|
||
UPDATE [main-user] SET [id_citrix]=@id WHERE upn_internal = @upn_internal AND [id_citrix] is null
|
||
</Query>
|
||
<Query Name="UpdateMainUserAgent">
|
||
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)
|
||
</Query>
|
||
<Query Name="UpdateMainUserAgentAzure">
|
||
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)
|
||
</Query>
|
||
<Query Name="UpdateMainUserAzureAd">
|
||
UPDATE [main-user] SET [id_azure]=@id_azure, [tenant_azure] = @tenant WHERE [sid_bin]=@sid_bin
|
||
</Query>
|
||
<Query Name="GetMainUserByAccount">
|
||
SELECT [id] FROM [main-user] WHERE [account] = @Account and [domainDns] = @Domain
|
||
</Query>
|
||
<Query Name="InsertLocalUser">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateMainUserLastSeen">
|
||
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)
|
||
</Query>
|
||
<Query Name="GetLocalUserFromId">
|
||
SELECT [id_agent], [last_seen_by_agent], [account] FROM [main-user-local] WHERE [id] = @ID
|
||
</Query>
|
||
<Query Name="GetUserListTest">
|
||
SELECT TOP (3000) [full_name] + ' (' + [upn_internal] + ')', [id] FROM [main-user] WHERE [is_active] = 1 ORDER BY [full_name]
|
||
</Query>
|
||
<Query Name="GetUserListTestFiltered">
|
||
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]
|
||
</Query>
|
||
<Query Name="GetComputerListTest">
|
||
SELECT TOP (3000) [name], [id] FROM [main-computer] ORDER BY [name]
|
||
</Query>
|
||
<Query Name="GetComputerListTestFiltered">
|
||
SELECT TOP (3000) [name], [id] FROM [main-computer] WHERE [last_seen_by_agent] > DATEADD(DAY, -14,GETUTCDATE()) ORDER BY [name]
|
||
</Query>
|
||
<Query Name="GetUserIdFromAccount">
|
||
SELECT [id] FROM [main-user] WHERE [account] like @account AND ([domainNB] like @domain OR [domainDns] like @domain)
|
||
</Query>
|
||
<Query Name="GetConnectorIdsFromComputerId">
|
||
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
|
||
</Query>
|
||
<Query Name="GetConnectorIdsFromUserId">
|
||
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
|
||
</Query>
|
||
<Query Name="GetUserInfoFromAgentId">
|
||
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
|
||
</Query>
|
||
<Query Name="GetComputerInfoFromAgentId">
|
||
SELECT [id], [name], [is_active], [name], COALESCE([domainDns],[domainNB]), 0 FROM [main-computer] WHERE [id_agent] = @id
|
||
</Query>
|
||
<Query Name="GetLocalUserInfoFromAgentId">
|
||
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
|
||
</Query>
|
||
<Query Name="GetUserUsageCountFromAgent">
|
||
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]
|
||
</Query>
|
||
<Query Name="GetComputerUsageCountFromAgent">
|
||
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]
|
||
</Query>
|
||
<Query Name="GetUserUsageCountFromAgentDaily">
|
||
SELECT [devicecode], SUM(CONVERT(BIGINT,[DURATION])),MAX([EVENTDATE]) FROM [{0}] WHERE [deviceaccountcode] = @ID GROUP BY [devicecode]
|
||
</Query>
|
||
<Query Name="GetComputerUsageCountFromAgentDaily">
|
||
SELECT [deviceaccountcode], SUM(CONVERT(BIGINT,[DURATION])),MAX([EVENTDATE]) FROM [{0}] WHERE [devicecode] = @ID GROUP BY [deviceaccountcode]
|
||
</Query>
|
||
<Query Name="GetComputerAttributesFromAgent">
|
||
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
|
||
</Query>
|
||
<Query Name="GetMeasureCodesFromAgent">
|
||
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
|
||
</Query>
|
||
<Query Name="GetTypeJsonSettingsFromAgent">
|
||
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
|
||
</Query>
|
||
<Query Name="GetComputerHistoricEventsTotalNumericFromAgent">
|
||
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)
|
||
</Query>
|
||
<Query Name="GetComputerHistoricEventsTotalStringFromAgent">
|
||
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)
|
||
</Query>
|
||
<Query Name="GetComputerHistoricEventsDailyFromAgent">
|
||
SELECT [MEASURECODE], [EVENTDATE], [VALUE], [DURATION] FROM [{0}] (nolock) WHERE [DEVICECODE] = @ID AND [MEASURECODE] in ({1})
|
||
</Query>
|
||
<Query Name="GetComputerHistoricEventsDailyUsageFromAgent">
|
||
SELECT [MEASURECODE], [EVENTDATE], [VALUE], [DURATION] FROM [{0}] (nolock) WHERE [DEVICECODE] = @ID
|
||
</Query>
|
||
<Query Name="GetOrganizationCodeFromAgent">
|
||
SELECT [ORGCODE] FROM [organization] (nolock) WHERE [NAME] = @ORGA
|
||
</Query>
|
||
<Query Name="GetDetailEventValuesFromAgent">
|
||
SELECT [EVENTDATE], [VALUE], [DURATION] FROM [c4it_event_data] (nolock) WHERE [DEVICECODE]=@ID AND [MEASURECODE] = @MC AND [EVENTDATE] >= @MINDATE
|
||
</Query>
|
||
<Query Name="GetDetailEventValuesNumericFromAgent">
|
||
SELECT [EVENTDATE], [VALUE], [DURATION] FROM [c4it_event] (nolock) WHERE [DEVICECODE]=@ID AND [MEASURECODE] = @MC AND [EVENTDATE] >= @MINDATE
|
||
</Query>
|
||
<Query Name="GetDetailEventValuesDailyFromAgent">
|
||
SELECT [EVENTDATE], [VALUE], [DURATION] FROM [{0}] (nolock) WHERE [DEVICECODE]=@ID AND [MEASURECODE] = @MC AND [EVENTDATE] >= @MINDATE
|
||
</Query>
|
||
<Query Name="GetDetailEventValuesDailyUsageFromAgent">
|
||
SELECT [EVENTDATE], [VALUE], [DURATION] FROM [{0}] (nolock) WHERE [DEVICECODE]=@ID AND [EVENTDATE] >= @MINDATE
|
||
</Query>
|
||
<Query Name="CreateScanHistoryEntry">
|
||
INSERT INTO [main-scan-history] ([ScanId], [Scan], [TimeFrameFrom], [TimeFrameTo], [ExecutionTime], [State]) VALUES (@ID, @Name, @From, @To, @Execute, 0 )
|
||
SELECT @@ROWCOUNT
|
||
</Query>
|
||
<Query Name="ConfirmScanHistoryEntry">
|
||
UPDATE [main-scan-history] SET [State]=1 WHERE [ScanId]=@ID
|
||
SELECT [Scan] FROM [main-scan-history] WHERE [ScanId]=@ID
|
||
</Query>
|
||
<Query Name="RemoveLastScanHistoryEntry">
|
||
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
|
||
</Query>
|
||
<Query Name="LoadColumnsValidationResult">
|
||
SELECT [Instance],[SubTable],[Column],[isValid] FROM [main-column-validation] WHERE [Connector]=@Connector
|
||
</Query>
|
||
<Query Name="FindNxtIdsComputer">
|
||
SELECT TOP 1 [engine], [id_int] FROM [nxt-device] WHERE [name] = @NAME ORDER BY [last_seen] DESC
|
||
</Query>
|
||
<Query Name="FindNxtIdsUser">
|
||
SELECT TOP 1 [engine], [id_int] FROM [nxt-user] WHERE [id_sid_bin] = @SID ORDER BY [last_seen] DESC
|
||
</Query>
|
||
<!--
|
||
<Query Name="GetHistoricTableContent">
|
||
SELECT TOP 1 [engine], [id_int] FROM [nxt-user] WHERE [id_sid_bin] = @SID ORDER BY [last_seen] DESC
|
||
</Query>
|
||
-->
|
||
<Query Name="GetScanHistoryCleanup">
|
||
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'
|
||
</Query>
|
||
<Query Name="DeleteScanHistoryEntry">
|
||
DELETE FROM [main-scan-history] WHERE [ScanId] = @ID;
|
||
</Query>
|
||
<!--
|
||
<Query Name="Validate_Create_Database">
|
||
DECLARE @HasPermission BIT = (SELECT HAS_PERMS_BY_NAME(@DbName, 'DATABASE', 'ANY'));
|
||
SELECT @HasPermission;
|
||
</Query>
|
||
-->
|
||
<Query Name="Validate_F4SDAnalyticsMainTables">
|
||
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)
|
||
</Query>
|
||
<Query Name="Validate_F4SDAnalyticsFunctions">
|
||
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)
|
||
</Query>
|
||
<Query Name="Create_F4SDAnalyticsFunctions">
|
||
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;
|
||
|
||
</Query>
|
||
<Query Name="Validate_F4SDAnalyticsViews">
|
||
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)
|
||
</Query>
|
||
<Query Name="Create_F4SDAnalyticsViews">
|
||
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
|
||
|
||
</Query>
|
||
<Query Name="Create_F4SDAnalyticsMainTables">
|
||
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
|
||
</Query>
|
||
<Query Name="Update_F4SDAnalyticsMainTables">
|
||
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
|
||
</Query>
|
||
|
||
<Query Name="Update_F4SDAnalyticsViews">
|
||
|
||
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
|
||
</Query>
|
||
|
||
<Query Name="CreateCase">
|
||
|
||
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
|
||
|
||
|
||
</Query>
|
||
<Query Name="UpdateCaseState">
|
||
|
||
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
|
||
|
||
</Query>
|
||
<Query Name="CreateUserSession">
|
||
|
||
INSERT INTO [UserSessions]
|
||
( UserId, SessionId, [Start])
|
||
SELECT @UserId, @SessionId, @SessionDate ;
|
||
|
||
</Query>
|
||
<Query Name="CloseUserSession">
|
||
|
||
UPDATE [UserSessions]
|
||
SET [Finish] = @SessionDate
|
||
WHERE SessionId = @SessionId;
|
||
|
||
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
|
||
|
||
</Query>
|
||
<Query Name="UpdateCases">
|
||
|
||
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
|
||
</Query>
|
||
<Query Name="InsertTicket">
|
||
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
|
||
</Query>
|
||
|
||
<Query Name="AnalyticsReportQuickActionExecution">
|
||
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')
|
||
</Query>
|
||
<Query Name="ReportQuickActionExecution">
|
||
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')
|
||
</Query>
|
||
<!--<Query Name="UpdateQActionInfo">
|
||
UPDATE [QActions] SET [Name]=@Name, [Type]=@Type WHERE [Id]=@Id
|
||
IF @@ROWCOUNT = 0 INSERT INTO [QActions] ([Id], [Name], [Type], [TimeStamp]) VALUES (@Id, @Name, @Type,GETUTCDATE())
|
||
SELECT @@ROWCOUNT
|
||
</Query>-->
|
||
<Query Name="UpdateQActionInfo">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateQActionInfoLang">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateConfigValue">
|
||
UPDATE [main-config] SET [Value]=@Value WHERE [Key]=@Key
|
||
IF @@ROWCOUNT = 0 INSERT INTO [main-config] ([Key], [Value]) VALUES (@Key, @Value)
|
||
SELECT @@ROWCOUNT
|
||
</Query>
|
||
<Query Name="GetConfigValues">
|
||
SELECT [Key],[Value] FROM [main-config]
|
||
</Query>
|
||
<Query Name="GetAllExternalTokens">
|
||
SELECT [id],[type],[name],[name2],[secret],[validUntil],[renewUntil] FROM [main-user-tokens]
|
||
</Query>
|
||
<Query Name="RemoveExpieredExternalTokens">
|
||
DELETE FROM [main-user-tokens] WHERE [validUntil] < @ValidUntil
|
||
</Query>
|
||
<Query Name="InsertOrUpdateExternalToken">
|
||
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
|
||
</Query>
|
||
<Query Name="GetComputerVitalSignInfoForIntune">
|
||
SELECT [id],[last_seen_by_agent] FROM [main-computer] WHERE [deviceId_azure]=@AZURE_ID
|
||
</Query>
|
||
<Query Name="UpdateVitalSignMonitoringAll">
|
||
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
|
||
</Query>
|
||
<Query Name="UpdateVitalSignMonitoringIntune">
|
||
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
|
||
</Query>
|
||
</Queries>
|
||
</DataHistorySql> |