The complete folder structure has been changed or updated
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [FNDD_GET_LICENSE_COUNT]
|
||||
-- =================================================================
|
||||
-- Reads the table [TBDD_USER_LOGIN_OUT] for used licenses
|
||||
--
|
||||
-- Returns: An integer value
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 13.06.2023 / MS
|
||||
-- Version Date / Editor: 15.09.2025 / MK
|
||||
-- Version Number: 2.0.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 13.06.2023 / MS - First Version
|
||||
-- 15.09.2025 / MK - Enhanced functionality and parameters
|
||||
|
||||
CREATE OR ALTER FUNCTION [dbo].[FNDD_GET_LICENSE_COUNT](
|
||||
@pCLIENT_ID TINYINT, -- Give the mandator ID from [TBDD_CLIENT] or 0, for all mandators.
|
||||
@pMODULE_ID TINYINT, -- Give the module ID from [TBDD_MODULES] the get the module name.
|
||||
@pLOOKBACK_IN_DAYS SMALLINT -- Give the timespan you want to monitor in the past.
|
||||
-- By giving 0, function will check sql table [TBDD_CATALOG] for global variables: <MODULE_NAME>_LICENSE_LOOKBACK_IN_DAYS.
|
||||
-- Failsafe value is 90 days.
|
||||
)
|
||||
RETURNS INTEGER
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
-- declare new vars because of parameter sniffing
|
||||
DECLARE @CLIENT_ID TINYINT = @pCLIENT_ID,
|
||||
@MODULE_ID TINYINT = @pMODULE_ID,
|
||||
@LOOKBACK_IN_DAYS SMALLINT = @pLOOKBACK_IN_DAYS;
|
||||
|
||||
-- declare runtime vars
|
||||
DECLARE @USED_LICENSE_COUNT INTEGER = 0,
|
||||
@MODULE_NAME NVARCHAR(50) = NULL,
|
||||
@MODULE_SHORT_NAME NVARCHAR(50) = NULL,
|
||||
@CATALOG_TITLE_TERM NVARCHAR(50) = '_LICENSE_LOOKBACK_IN_DAYS';
|
||||
|
||||
--=================================================-- Get module name --===================================================--
|
||||
SELECT @MODULE_NAME = [NAME],
|
||||
@MODULE_SHORT_NAME = [SHORT_NAME]
|
||||
FROM [TBDD_MODULES] (NOLOCK)
|
||||
WHERE [GUID] = @MODULE_ID AND [ACTIVE] = 1;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===========================================-- Exit because of missing data --============================================--
|
||||
IF (LEN(@MODULE_NAME) = 0) AND (LEN(@MODULE_SHORT_NAME) = 0) BEGIN
|
||||
RETURN ISNULL(@USED_LICENSE_COUNT,0);
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===================================-- Determ how long in the past we need to check --===================================--
|
||||
IF (@LOOKBACK_IN_DAYS = 0) BEGIN
|
||||
|
||||
IF (EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = 'TBDD_CATALOG')) BEGIN
|
||||
SELECT TOP (1) @LOOKBACK_IN_DAYS = CONVERT(INTEGER,[CAT_STRING])
|
||||
FROM [TBDD_CATALOG] (NOLOCK)
|
||||
WHERE [CAT_TITLE] IN (CONCAT(@MODULE_NAME,@CATALOG_TITLE_TERM),CONCAT(@MODULE_SHORT_NAME,@CATALOG_TITLE_TERM));
|
||||
END;
|
||||
|
||||
IF ((@LOOKBACK_IN_DAYS is null) or (@LOOKBACK_IN_DAYS = 0)) BEGIN -- Failsafe is 90 days
|
||||
SET @LOOKBACK_IN_DAYS = 90;
|
||||
END;
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===========================================-- Exit because of missing table --===========================================--
|
||||
IF NOT (EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = 'TBDD_USER_LOGIN_OUT')) BEGIN
|
||||
RETURN ISNULL(@USED_LICENSE_COUNT,0);
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--=====================================================-- main part --=====================================================--
|
||||
IF (@CLIENT_ID = 0) BEGIN
|
||||
|
||||
SET @USED_LICENSE_COUNT = (SELECT COUNT(DISTINCT [USER_ID])
|
||||
FROM [TBDD_USER_LOGIN_OUT] (NOLOCK)
|
||||
WHERE LEN([MACHINE_NAME]) > 0
|
||||
AND [CLIENT_ID] IS NOT NULL
|
||||
AND [MODULE] IN (@MODULE_NAME,@MODULE_SHORT_NAME)
|
||||
AND CONVERT(DATE,[LOGIN]) BETWEEN DATEADD(DAY, (@LOOKBACK_IN_DAYS*(-1)), GETDATE()) AND GETDATE());
|
||||
|
||||
END; ELSE BEGIN
|
||||
|
||||
SET @USED_LICENSE_COUNT = (SELECT COUNT(DISTINCT [USER_ID])
|
||||
FROM [TBDD_USER_LOGIN_OUT] (NOLOCK)
|
||||
WHERE LEN([MACHINE_NAME]) > 0
|
||||
AND [CLIENT_ID] = @CLIENT_ID
|
||||
AND [MODULE] IN (@MODULE_NAME,@MODULE_SHORT_NAME)
|
||||
AND CONVERT(DATE,[LOGIN]) BETWEEN DATEADD(DAY, (@LOOKBACK_IN_DAYS*(-1)), GETDATE()) AND GETDATE());
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===============================================-- Returning final count --===============================================--
|
||||
RETURN ISNULL(@USED_LICENSE_COUNT,0);
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
END;
|
||||
GO
|
||||
Reference in New Issue
Block a user