Serverumzug
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -120,4 +120,4 @@ LogFileKeepTime = 30
|
|||||||
#InstallServiceProfile = Digital Data JobRunner ; D:\ProgramFiles\Digital Data\DDJobRunner\SERVICE\DigitalData.Services.JobRunner.exe ; ; Manual ; InstallOnly ; Executes defined and configured jobs to synchronize master and transaction data.
|
#InstallServiceProfile = Digital Data JobRunner ; D:\ProgramFiles\Digital Data\DDJobRunner\SERVICE\DigitalData.Services.JobRunner.exe ; ; Manual ; InstallOnly ; Executes defined and configured jobs to synchronize master and transaction data.
|
||||||
#InstallServiceProfile = Digital Data Email-Service ; D:\ProgramFiles\Digital Data\DDEmailService\SERVICE\DDEmailService.exe ; ; Manual ; InstallOnly ; Sends emails from the Digital Data email pool.
|
#InstallServiceProfile = Digital Data Email-Service ; D:\ProgramFiles\Digital Data\DDEmailService\SERVICE\DDEmailService.exe ; ; Manual ; InstallOnly ; Sends emails from the Digital Data email pool.
|
||||||
#InstallServiceProfile = Digital Data WM-ResultHandler ; D:\ProgramFiles\Digital Data\DDResultHandler\SERVICE\DDWDResultHandler.exe ; ; Manual ; InstallOnly ; Executes windream searches and processes the results according to profile specifications.
|
#InstallServiceProfile = Digital Data WM-ResultHandler ; D:\ProgramFiles\Digital Data\DDResultHandler\SERVICE\DDWDResultHandler.exe ; ; Manual ; InstallOnly ; Executes windream searches and processes the results according to profile specifications.
|
||||||
#InstallServiceProfile = Digital Data EDMI-Service ; ; ; Manual ; InstallOnly ; Proxy Service for Digital Data Applications.
|
#InstallServiceProfile = Digital Data EDMI-Service ; D:\ProgramFiles\Digital Data\DDEDMI\SERVICE\EDMIService.exe ; ; Manual ; InstallOnly ; Proxy Service for Digital Data Applications.
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# Remove-AzureArcSetup
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# This Script uninstalles the Azure Arc Setup (the installed Agent!),
|
||||||
|
# if it´s installed in Windows Server 2025.
|
||||||
|
#
|
||||||
|
# Returns: -
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Copyright (c) 2026 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: 09.04.2026 / MK
|
||||||
|
# Version Date / Editor: 09.04.2026 / MK
|
||||||
|
# Version Number: 1.0.0.0
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------------------------------#
|
||||||
|
############################################# main part ###############################################
|
||||||
|
#-----------------------------------------------------------------------------------------------------#
|
||||||
|
|
||||||
|
$AzureArcSetup = Get-WindowsCapability -Online -Name "AzureArcSetup~~~~"
|
||||||
|
if ($AzureArcSetup.State -eq "Installed") {
|
||||||
|
Remove-WindowsCapability -Online -Name "AzureArcSetup~~~~"
|
||||||
|
}
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------------------------------#
|
||||||
|
########################################### finishing part ############################################
|
||||||
|
#-----------------------------------------------------------------------------------------------------#
|
||||||
|
|
||||||
|
Remove-Variable -Name AzureArcSetup -Force -ErrorAction SilentlyContinue
|
||||||
BIN
current/Import-FileContentToDB/Import-FileContentToDB.ps1
Normal file
BIN
current/Import-FileContentToDB/Import-FileContentToDB.ps1
Normal file
Binary file not shown.
@@ -0,0 +1,87 @@
|
|||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 2.2.0.1 - 21.10.2024
|
||||||
|
NEW: -
|
||||||
|
FIX: - Fixed issues with data Seperator
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 2.2.0.0 - 14.10.2024
|
||||||
|
NEW: - Multiple Replace cmds in PreparingFile
|
||||||
|
FIX: - Fixed XLSX and CSV import issues
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 2.1.0.0 - 11.10.2024
|
||||||
|
NEW: - Parameter call (-pProfileID)
|
||||||
|
FIX: - Fixed CSV import issue, if inverted commas in data - other case
|
||||||
|
CHG: - " will be removed bevor inserting data, Code improvement
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 2.0.1.0 - 10.06.2024
|
||||||
|
NEW: -
|
||||||
|
FIX: - Fixed CSV import issue, if inverted commas in data
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 2.0.0.2 - 07.05.2024
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: - For ExcelImport Value Seperator removed
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 2.0.0.1 - 20.03.2024
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: - Code improvement, clean up variables
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 2.0.0.0 - 18.03.2024
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: - New working Version with Hash tables instead of arrays
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.2.0.0 - 06.12.2023
|
||||||
|
NEW: - Excel Import Methode implemented
|
||||||
|
FIX: -
|
||||||
|
CHG: - Rename - old: Import-FileContent2Database, new: Import-FileContentToDB
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.1.0.0 - 18.04.2019
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: - Rename - old: Import-CSV2DB, new: Import-FileContent2Database
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.0.0.0 - 15.10.2018
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------legend------------------------------------
|
||||||
|
NEW: = Added a new functionality
|
||||||
|
FIX: = Fixed a Issue with existing functionality
|
||||||
|
CHG: = Changed a existing functionality
|
||||||
|
REM: = Removed a functionality
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
BIN
current/MoveOrCopy-Files/MoveOrCopy-Files.ps1
Normal file
BIN
current/MoveOrCopy-Files/MoveOrCopy-Files.ps1
Normal file
Binary file not shown.
127
current/MoveOrCopy-Files/MoveOrCopy-Files_History.txt
Normal file
127
current/MoveOrCopy-Files/MoveOrCopy-Files_History.txt
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
Version 1.5.0.0 - 21.02.2024
|
||||||
|
NEW: - Es können nun Netzlaufwerke per "MountProfile" eingebunden werden
|
||||||
|
FIX: -
|
||||||
|
CHG: - Der aktuelle Module Loader wurde implementiert
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.3.3.0 - 12.12.2023
|
||||||
|
NEW: - Man kann nun den Parameter %not% als negatives Suchkriterium verwenden
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.3.2.0 - 08.07.2021
|
||||||
|
NEW: -
|
||||||
|
FIX: - Fehler beim L<>schen von Logs behoben.
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.3.1.0 - 30.04.2021
|
||||||
|
NEW: -
|
||||||
|
FIX: - Fehler in File Collector Funktion behoben.
|
||||||
|
- Fehler in Zielpfadbestimmung behoben, wenn Datei Attribute ausgelesen wurden.
|
||||||
|
CHG: - File Collector listet nun vorab nicht mehr alle Dateien auf (machte das Skript zu langsam und die Logs zu gro<72>).
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.3.0.0 - 22.04.2021
|
||||||
|
NEW: - Neuer Parameter f<>r Profile, es muss nun bestimmt werden, ob auch Unterverzeichnisse durchsucht werden (ReclusiveSwitch).
|
||||||
|
- Neuer Parameter f<>r Profile, es muss nun bestimmt werden, wie eine Datei vor der Verarbeitung gepr<70>ft wird (filechecktyp).
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.2.0.0 - 20.04.2021
|
||||||
|
NEW: - Diverse Datumsplatzhalter f<>r den Zielpfad eingef<65>gt (z.b.: %CreationTimeYear%, ...)
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.1.4.0 - 15.03.2019
|
||||||
|
NEW: -
|
||||||
|
FIX: - Schleifen Fehler bei %ProcessOnlyLastProfileFiles behoben
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.1.3.0 - 13.03.2019
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: - Log Dateien entschlackt
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.1.2.0 - 28.02.2019
|
||||||
|
NEW: - %date% Variable hinzugef<65>gt
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.1.1.0 - 24.02.2017
|
||||||
|
NEW: -
|
||||||
|
FIX: - Fehler in Schleifenz<6E>hler korrigiert.
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.1.0.1 - 01.08.2016
|
||||||
|
NEW: -
|
||||||
|
FIX: - Variablen Bereinigung vervollst<73>ndigt.
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.1.0.0 - 29.07.2016
|
||||||
|
NEW: - Neue optionale Parameter verf<72>gbar: %RegExGroup and %Replace.
|
||||||
|
FIX: -
|
||||||
|
CHG: - Optionale Parameter folgen nun keiner spezifischen Reihenfolge mehr.
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Version 1.0.1.2 - 07.02.2016
|
||||||
|
NEW: - Aufrufparameter nun verf<72>gbar.
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.0.1.0 - 30.09.2015
|
||||||
|
NEW: - Funktion "Func-File-check-state" nun eingebaut.
|
||||||
|
FIX: -
|
||||||
|
CHG: - Umbennung von "Simply_copy_or_move_Files" zu "MoveOrCopyFiles".
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.0.0.0 - 08.12.2014 - Erste funktionierende Version!
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
--------------------------Legende--------------------------
|
||||||
|
NEW: = Hinzuf<75>gen einer neuen Funktion
|
||||||
|
FIX: = Korrektur einer vorhandenen Funktion
|
||||||
|
CHG: = <20>nderung oder Erweiterung einer vorhandenen Funktion
|
||||||
|
REM: = Entfernen einer Funktion
|
||||||
|
-----------------------------------------------------------
|
||||||
45
current/Set-FolderAttributes/Set-FolderAttributes_Caller.cmd
Normal file
45
current/Set-FolderAttributes/Set-FolderAttributes_Caller.cmd
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
TITLE DIGITAL DATA - Run all files in directory with current permissions
|
||||||
|
ECHO -
|
||||||
|
ECHO Batch Script
|
||||||
|
ECHO Run all files in directory with current permissions
|
||||||
|
ECHO -
|
||||||
|
ECHO Digital Data
|
||||||
|
ECHO Ludwig-Rinn-Strasse 16
|
||||||
|
ECHO 35452 Heuchelheim
|
||||||
|
ECHO Tel.: 0641 / 202360
|
||||||
|
ECHO E-Mail: info@didalog.de
|
||||||
|
ECHO -
|
||||||
|
ECHO Version 1.0.0.0
|
||||||
|
ECHO Date: 13.08.2015
|
||||||
|
ECHO -
|
||||||
|
ECHO Program Startup %date% at %time:~0,8% oclock, on %computername%.
|
||||||
|
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
REM ------------------------set variables-------------------------
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal enableextensions
|
||||||
|
|
||||||
|
SET DIRECTORY="%cd%"
|
||||||
|
SET FILEEXTENSION=*.ps1
|
||||||
|
SET COUNT=0
|
||||||
|
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
REM ---------------------Program 1 / Script 1---------------------
|
||||||
|
REM --------------------------------------------------------------
|
||||||
|
|
||||||
|
FOR /F "tokens=*" %%f in ('dir /S /b %FILEEXTENSION%') do (ECHO %%f && set /a count+=1)
|
||||||
|
ECHO -
|
||||||
|
ECHO Found %count% File(s) with File Extension %FILEEXTENSION% in Directory:
|
||||||
|
ECHO %DIRECTORY%.
|
||||||
|
|
||||||
|
ECHO -
|
||||||
|
ECHO Running this/them now, with your permissions!
|
||||||
|
FOR /F "tokens=*" %%f in ('dir /S /b %FILEEXTENSION%') do (PowerShell.exe -Command "& {Start-Process PowerShell.exe -WindowStyle hidden '-ExecutionPolicy Bypass -File "%%f"'}")
|
||||||
|
|
||||||
|
ECHO -
|
||||||
|
ECHO This Window will close in:
|
||||||
|
#timeout /T 10
|
||||||
|
endlocal
|
||||||
|
exit
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.1.0.0 - 18.04.2019
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version 1.0.0.0 - 07.03.2016
|
||||||
|
NEW: -
|
||||||
|
FIX: -
|
||||||
|
CHG: -
|
||||||
|
REM: -
|
||||||
|
|
||||||
|
-------------------------------------legend------------------------------------
|
||||||
|
NEW: = Added a new functionality
|
||||||
|
FIX: = Fixed a Issue with existing functionality
|
||||||
|
CHG: = Changed a existing functionality
|
||||||
|
REM: = Removed a functionality
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
245
current/[DD_ECM]-Database/ReC/[PRREC_DELETE_OBJECT].sql
Normal file
245
current/[DD_ECM]-Database/ReC/[PRREC_DELETE_OBJECT].sql
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- [PRREC_DELETE_OBJECT]
|
||||||
|
-- =================================================================
|
||||||
|
-- Deletes one or more data in a given Entity
|
||||||
|
--
|
||||||
|
-- Returns: INT Value - 0 = Everything worked well
|
||||||
|
-- =================================================================
|
||||||
|
-- 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: 22.12.2025 / MK
|
||||||
|
-- Version Date / Editor: 22.12.2025 / MK
|
||||||
|
-- Version Number: 1.0.0.0
|
||||||
|
-- =================================================================
|
||||||
|
-- History:
|
||||||
|
-- 22.12.2025 / MK - First Version
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [dbo].[PRREC_DELETE_OBJECT] (
|
||||||
|
@pENTITY NVARCHAR(25) = 'RESULT', -- Target entity: ACTION, ENDPOINT, ENDPOINT_AUTH, ENDPOINT_PARAMS, PROFILE, RESULT
|
||||||
|
@pSTART NVARCHAR(25) = '0', -- Start GUID/ID (inclusive), numeric text
|
||||||
|
@pEND NVARCHAR(25) = '0', -- End GUID/ID (inclusive), numeric text
|
||||||
|
@pFORCE BIT = 0 -- 1 = delete even if dependent data exists
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
SET XACT_ABORT ON;
|
||||||
|
|
||||||
|
-- declare new vars because of parameter sniffing
|
||||||
|
DECLARE @ENTITY NVARCHAR(25) = UPPER(LTRIM(RTRIM(ISNULL(@pENTITY, 'RESULT')))),
|
||||||
|
@START_VAL NVARCHAR(25) = LTRIM(RTRIM(ISNULL(@pSTART, '0'))),
|
||||||
|
@END_VAL NVARCHAR(25) = LTRIM(RTRIM(ISNULL(@pEND, '0'))),
|
||||||
|
@FORCE BIT = ISNULL(@pFORCE, 0);
|
||||||
|
|
||||||
|
-- declare runtime vars
|
||||||
|
DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||||
|
DECLARE @START_ID BIGINT = TRY_CAST(@START_VAL AS BIGINT),
|
||||||
|
@END_ID BIGINT = TRY_CAST(@END_VAL AS BIGINT),
|
||||||
|
@END_ID_TMP BIGINT = 0,
|
||||||
|
@RETURN_STATUS INT = 0,
|
||||||
|
@RETURN_STATUS_TEXT NVARCHAR(MAX) = 'START PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--=================================================-- Output parameters --================================================--
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '';
|
||||||
|
PRINT 'PARAMETER01 - @ENTITY: ' + ISNULL(CONVERT(NVARCHAR(25), @ENTITY), 'NULL');
|
||||||
|
PRINT 'PARAMETER02 - @START: ' + ISNULL(CONVERT(NVARCHAR(25), @START_VAL), 'NULL');
|
||||||
|
PRINT 'PARAMETER03 - @END: ' + ISNULL(CONVERT(NVARCHAR(25), @END_VAL), 'NULL');
|
||||||
|
PRINT 'PARAMETER04 - @FORCE: ' + ISNULL(CONVERT(NVARCHAR(1), @FORCE), 'NULL');
|
||||||
|
PRINT '';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--================================================-- Validation --=======================================================--
|
||||||
|
IF (@ENTITY NOT IN ('ACTION', 'ENDPOINT', 'ENDPOINT_AUTH', 'ENDPOINT_PARAMS', 'PROFILE', 'RESULT')) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50301;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: Unknown entity "' + @ENTITY + '". Allowed: ACTION, ENDPOINT, ENDPOINT_AUTH, ENDPOINT_PARAMS, PROFILE, RESULT.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF (@START_ID IS NULL OR @END_ID IS NULL) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50302;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: @START and @END must be convertible to BIGINT.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END;
|
||||||
|
|
||||||
|
-- normalize range
|
||||||
|
IF (@END_ID = 0) BEGIN
|
||||||
|
SET @END_ID = @START_ID;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF (@START_ID = 0) BEGIN
|
||||||
|
SET @START_ID = @END_ID;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF (@START_ID > @END_ID) BEGIN
|
||||||
|
SET @END_ID_TMP = @START_ID;
|
||||||
|
SET @START_ID = @END_ID;
|
||||||
|
SET @END_ID = @END_ID_TMP;
|
||||||
|
END;
|
||||||
|
|
||||||
|
PRINT 'INFO: Normalized deletion range from ' + CONVERT(NVARCHAR(25), @START_ID) + ' to ' + CONVERT(NVARCHAR(25), @END_ID);
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--===============================================-- Main Processing --===================================================--
|
||||||
|
BEGIN TRY
|
||||||
|
|
||||||
|
BEGIN TRANSACTION;
|
||||||
|
|
||||||
|
-- Delete selected entities respecting dependencies
|
||||||
|
IF (@ENTITY = 'ACTION' AND @RETURN_STATUS = 0) BEGIN
|
||||||
|
PRINT 'INFO: Deleting ACTION records...';
|
||||||
|
|
||||||
|
IF (@FORCE = 0 AND EXISTS (SELECT 1 FROM [dbo].[TBREC_OUT_RESULT] WHERE [ACTION_ID] BETWEEN @START_ID AND @END_ID)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50303;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: Dependent results exist for ACTION. Set @pFORCE=1 to delete anyway.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
DELETE FROM [dbo].[TBREC_OUT_RESULT] WHERE [ACTION_ID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_ACTION] WHERE [GUID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: ACTION and related RESULT records deleted.';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
ELSE IF (@ENTITY = 'ENDPOINT' AND @RETURN_STATUS = 0) BEGIN
|
||||||
|
PRINT 'INFO: Deleting ENDPOINT records...';
|
||||||
|
|
||||||
|
IF (@FORCE = 0 AND EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_ACTION] WHERE [ENDPOINT_ID] BETWEEN @START_ID AND @END_ID)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50304;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT is used by ACTION. Set @pFORCE=1 to delete anyway.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
DECLARE @ActionIdsForEndpoint TABLE (GUID BIGINT PRIMARY KEY);
|
||||||
|
INSERT INTO @ActionIdsForEndpoint(GUID)
|
||||||
|
SELECT [GUID] FROM [dbo].[TBREC_CFG_ACTION] WHERE [ENDPOINT_ID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
|
||||||
|
DELETE FROM [dbo].[TBREC_OUT_RESULT] WHERE [ACTION_ID] IN (SELECT GUID FROM @ActionIdsForEndpoint);
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_ACTION] WHERE [GUID] IN (SELECT GUID FROM @ActionIdsForEndpoint);
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_ENDPOINT] WHERE [GUID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: ENDPOINT, related ACTION and RESULT records deleted.';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
ELSE IF (@ENTITY = 'ENDPOINT_AUTH' AND @RETURN_STATUS = 0) BEGIN
|
||||||
|
PRINT 'INFO: Deleting ENDPOINT_AUTH records...';
|
||||||
|
|
||||||
|
IF (@FORCE = 0 AND EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_ACTION] WHERE [ENDPOINT_AUTH_ID] BETWEEN @START_ID AND @END_ID)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50305;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT_AUTH is used by ACTION. Set @pFORCE=1 to delete anyway.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
DECLARE @ActionIdsForAuth TABLE (GUID BIGINT PRIMARY KEY);
|
||||||
|
INSERT INTO @ActionIdsForAuth(GUID)
|
||||||
|
SELECT [GUID] FROM [dbo].[TBREC_CFG_ACTION] WHERE [ENDPOINT_AUTH_ID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
|
||||||
|
DELETE FROM [dbo].[TBREC_OUT_RESULT] WHERE [ACTION_ID] IN (SELECT GUID FROM @ActionIdsForAuth);
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_ACTION] WHERE [GUID] IN (SELECT GUID FROM @ActionIdsForAuth);
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_ENDPOINT_AUTH] WHERE [GUID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: ENDPOINT_AUTH, related ACTION and RESULT records deleted.';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
ELSE IF (@ENTITY = 'ENDPOINT_PARAMS' AND @RETURN_STATUS = 0) BEGIN
|
||||||
|
PRINT 'INFO: Deleting ENDPOINT_PARAMS records...';
|
||||||
|
|
||||||
|
IF (@FORCE = 0 AND EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_ACTION] WHERE [ENDPOINT_PARAMS_ID] BETWEEN @START_ID AND @END_ID)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50306;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT_PARAMS is used by ACTION. Set @pFORCE=1 to delete anyway.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
DECLARE @ActionIdsForParams TABLE (GUID BIGINT PRIMARY KEY);
|
||||||
|
INSERT INTO @ActionIdsForParams(GUID)
|
||||||
|
SELECT [GUID] FROM [dbo].[TBREC_CFG_ACTION] WHERE [ENDPOINT_PARAMS_ID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
|
||||||
|
DELETE FROM [dbo].[TBREC_OUT_RESULT] WHERE [ACTION_ID] IN (SELECT GUID FROM @ActionIdsForParams);
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_ACTION] WHERE [GUID] IN (SELECT GUID FROM @ActionIdsForParams);
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_ENDPOINT_PARAMS] WHERE [GUID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: ENDPOINT_PARAMS, related ACTION and RESULT records deleted.';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
ELSE IF (@ENTITY = 'PROFILE' AND @RETURN_STATUS = 0) BEGIN
|
||||||
|
PRINT 'INFO: Deleting PROFILE records...';
|
||||||
|
|
||||||
|
IF (@FORCE = 0 AND EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_ACTION] WHERE [PROFILE_ID] BETWEEN @START_ID AND @END_ID)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50307;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: PROFILE is used by ACTION. Set @pFORCE=1 to delete anyway.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
DECLARE @ActionIdsForProfile TABLE (GUID BIGINT PRIMARY KEY);
|
||||||
|
INSERT INTO @ActionIdsForProfile(GUID)
|
||||||
|
SELECT [GUID] FROM [dbo].[TBREC_CFG_ACTION] WHERE [PROFILE_ID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
|
||||||
|
DELETE FROM [dbo].[TBREC_OUT_RESULT] WHERE [ACTION_ID] IN (SELECT GUID FROM @ActionIdsForProfile);
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_ACTION] WHERE [GUID] IN (SELECT GUID FROM @ActionIdsForProfile);
|
||||||
|
DELETE FROM [dbo].[TBREC_RUN_PROFILE] WHERE [PROFILE_ID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
DELETE FROM [dbo].[TBREC_CFG_PROFILE] WHERE [GUID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: PROFILE, related ACTION, RESULT and RUN records deleted.';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
ELSE IF (@ENTITY = 'RESULT' AND @RETURN_STATUS = 0) BEGIN
|
||||||
|
PRINT 'INFO: Deleting RESULT records...';
|
||||||
|
DELETE FROM [dbo].[TBREC_OUT_RESULT] WHERE [GUID] BETWEEN @START_ID AND @END_ID;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: RESULT records deleted.';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF (@RETURN_STATUS > 0) BEGIN
|
||||||
|
IF (XACT_STATE() <> 0) ROLLBACK TRANSACTION;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
COMMIT TRANSACTION;
|
||||||
|
END;
|
||||||
|
|
||||||
|
--======================================================-- Output result --======================================================--
|
||||||
|
SET @RETURN_STATUS_TEXT = 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
|
||||||
|
PRINT '';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
|
||||||
|
END TRY BEGIN CATCH
|
||||||
|
|
||||||
|
IF (XACT_STATE() <> 0) ROLLBACK TRANSACTION;
|
||||||
|
|
||||||
|
--======================================================-- Output result --======================================================--
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ' + ERROR_MESSAGE();
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
|
||||||
|
PRINT '';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
|
||||||
|
END CATCH;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
END;
|
||||||
|
GO
|
||||||
460
current/[DD_ECM]-Database/ReC/[PRREC_INSERT_OBJECT].sql
Normal file
460
current/[DD_ECM]-Database/ReC/[PRREC_INSERT_OBJECT].sql
Normal file
@@ -0,0 +1,460 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- [PRREC_INSERT_OBJECT]
|
||||||
|
-- =================================================================
|
||||||
|
-- Inserts one record into a given Entity
|
||||||
|
--
|
||||||
|
-- Returns: INT Value - 0 = Everything worked well
|
||||||
|
-- BIGINT - Output parameter @oGUID returns the inserted GUID
|
||||||
|
-- =================================================================
|
||||||
|
-- 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: 22.12.2025 / MK
|
||||||
|
-- Version Date / Editor: 22.12.2025 / MK
|
||||||
|
-- Version Number: 1.0.0.0
|
||||||
|
-- =================================================================
|
||||||
|
-- History:
|
||||||
|
-- 22.12.2025 / MK - First Version
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [dbo].[PRREC_INSERT_OBJECT] (
|
||||||
|
@pENTITY NVARCHAR(25) = 'ACTION', -- Target entity: ACTION, ENDPOINT, ENDPOINT_AUTH, ENDPOINT_PARAMS, PROFILE, RESULT
|
||||||
|
@pADDED_WHO NVARCHAR(50) = NULL, -- User or function of the Insert
|
||||||
|
@pADDED_WHEN DATETIME = NULL, -- Datetime of the Insert
|
||||||
|
@pACTION_PROFILE_ID BIGINT = NULL, -- ACTION: Profile GUID (required)
|
||||||
|
@pACTION_ACTIVE BIT = 1, -- ACTION: Active flag
|
||||||
|
@pACTION_SEQUENCE TINYINT = 0, -- ACTION: Sequence/order
|
||||||
|
@pACTION_ENDPOINT_ID BIGINT = NULL, -- ACTION: Endpoint GUID (required)
|
||||||
|
@pACTION_ENDPOINT_AUTH_ID BIGINT = NULL, -- ACTION: Endpoint auth GUID
|
||||||
|
@pACTION_ENDPOINT_PARAMS_ID SMALLINT = NULL, -- ACTION: Endpoint params group GUID
|
||||||
|
@pACTION_SQL_CONNECTION_ID SMALLINT = NULL, -- ACTION: SQL connection GUID
|
||||||
|
@pACTION_TYPE_ID TINYINT = 1, -- ACTION: HTTP method id (0..9)
|
||||||
|
@pACTION_PRE_SQL NVARCHAR(MAX) = NULL, -- ACTION: SQL to run before request
|
||||||
|
@pACTION_HEADER_SQL NVARCHAR(MAX) = NULL, -- ACTION: SQL to build headers
|
||||||
|
@pACTION_BODY_SQL NVARCHAR(MAX) = NULL, -- ACTION: SQL to build body
|
||||||
|
@pACTION_POST_SQL NVARCHAR(MAX) = NULL, -- ACTION: SQL to run after request
|
||||||
|
@pACTION_ERROR_ACTION_ID TINYINT = 0, -- ACTION: Error behavior (0=STOP,1=CONTINUE)
|
||||||
|
@pENDPOINT_ACTIVE BIT = 1, -- ENDPOINT: Active flag
|
||||||
|
@pENDPOINT_DESCRIPTION NVARCHAR(250) = NULL, -- ENDPOINT: Description
|
||||||
|
@pENDPOINT_URI NVARCHAR(2000) = NULL, -- ENDPOINT: Target URI (required)
|
||||||
|
@pENDPOINT_AUTH_ACTIVE BIT = 1, -- ENDPOINT_AUTH: Active flag
|
||||||
|
@pENDPOINT_AUTH_DESCRIPTION NVARCHAR(250) = NULL, -- ENDPOINT_AUTH: Description
|
||||||
|
@pENDPOINT_AUTH_TYPE_ID TINYINT = 0, -- ENDPOINT_AUTH_ID: Auth type id (0..9)
|
||||||
|
@pENDPOINT_AUTH_API_KEY NVARCHAR(150) = NULL, -- ENDPOINT_AUTH: API key name/header
|
||||||
|
@pENDPOINT_AUTH_API_VALUE NVARCHAR(150) = NULL, -- ENDPOINT_AUTH: API key value
|
||||||
|
@pENDPOINT_AUTH_API_KEY_ADD_TO_ID BIT = NULL, -- ENDPOINT_AUTH: API key placement (0=HEADER,1=QUERY)
|
||||||
|
@pENDPOINT_AUTH_TOKEN NVARCHAR(150) = NULL, -- ENDPOINT_AUTH: Bearer/JWT token
|
||||||
|
@pENDPOINT_AUTH_USERNAME NVARCHAR(100) = NULL, -- ENDPOINT_AUTH: Username
|
||||||
|
@pENDPOINT_AUTH_PASSWORD NVARCHAR(100) = NULL, -- ENDPOINT_AUTH: Password
|
||||||
|
@pENDPOINT_AUTH_DOMAIN NVARCHAR(50) = NULL, -- ENDPOINT_AUTH: Domain (NTLM)
|
||||||
|
@pENDPOINT_AUTH_WORKSTATION NVARCHAR(50) = NULL, -- ENDPOINT_AUTH: Workstation (NTLM)
|
||||||
|
@pPROFILE_ACTIVE BIT = 1, -- PROFILE: Active flag
|
||||||
|
@pPROFILE_TYPE_ID TINYINT = 1, -- PROFILE: Protocol type id (1=HTTP,2=HTTPS)
|
||||||
|
@pPROFILE_MANDANTOR NVARCHAR(50) = 'DEFAULT', -- PROFILE: Tenant/mandator
|
||||||
|
@pPROFILE_NAME NVARCHAR(50) = NULL, -- PROFILE: Profile name (required)
|
||||||
|
@pPROFILE_DESCRIPTION NVARCHAR(250) = NULL, -- PROFILE: Description
|
||||||
|
@pPROFILE_LOG_LEVEL_ID TINYINT = 4, -- PROFILE: Log level id (0..6)
|
||||||
|
@pPROFILE_LANGUAGE_ID SMALLINT = 1031, -- PROFILE: Language id (1031/1033)
|
||||||
|
@pRESULT_ACTION_ID BIGINT = NULL, -- RESULT: Action GUID (required)
|
||||||
|
@pRESULT_STATUS_ID SMALLINT = NULL, -- RESULT: HTTP status code (required)
|
||||||
|
@pRESULT_TYPE_ID TINYINT = NULL, -- RESULT: 1 = Pre; 2 = Main; 3 = Post
|
||||||
|
@pRESULT_HEADER NVARCHAR(MAX) = NULL, -- RESULT: Response header
|
||||||
|
@pRESULT_BODY NVARCHAR(MAX) = NULL, -- RESULT: Response body
|
||||||
|
@pRESULT_INFO NVARCHAR(MAX) = NULL, -- RESULT: Optional Response info text
|
||||||
|
@pRESULT_ERROR NVARCHAR(MAX) = NULL, -- RESULT: Optional Response error text
|
||||||
|
@pENDPOINT_PARAMS_ACTIVE BIT = 1, -- ENDPOINT_PARAMS: Active flag
|
||||||
|
@pENDPOINT_PARAMS_DESCRIPTION NVARCHAR(250) = NULL, -- ENDPOINT_PARAMS: Description
|
||||||
|
@pENDPOINT_PARAMS_GROUP_ID SMALLINT = NULL, -- ENDPOINT_PARAMS: Parameter group id (required)
|
||||||
|
@pENDPOINT_PARAMS_SEQUENCE TINYINT = NULL, -- ENDPOINT_PARAMS: Sequence/order
|
||||||
|
@pENDPOINT_PARAMS_KEY NVARCHAR(150) = NULL, -- ENDPOINT_PARAMS: Parameter key/name
|
||||||
|
@pENDPOINT_PARAMS_VALUE NVARCHAR(150) = NULL, -- ENDPOINT_PARAMS: Parameter value
|
||||||
|
@oGUID BIGINT = NULL OUTPUT -- Output: inserted GUID
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
SET XACT_ABORT ON;
|
||||||
|
|
||||||
|
-- declare new vars because of parameter sniffing
|
||||||
|
DECLARE @ENTITY NVARCHAR(25) = UPPER(LTRIM(RTRIM(ISNULL(@pENTITY, 'ACTION')))),
|
||||||
|
@ADDED_WHO NVARCHAR(50) = ISNULL(@pADDED_WHO, OBJECT_NAME(@@PROCID)),
|
||||||
|
@ADDED_WHEN DATETIME = ISNULL(@pADDED_WHEN,GetDate()),
|
||||||
|
@ACTION_PROFILE_ID BIGINT = @pACTION_PROFILE_ID,
|
||||||
|
@ACTION_ACTIVE BIT = @pACTION_ACTIVE,
|
||||||
|
@ACTION_SEQUENCE TINYINT = @pACTION_SEQUENCE,
|
||||||
|
@ACTION_ENDPOINT_ID BIGINT = @pACTION_ENDPOINT_ID,
|
||||||
|
@ACTION_ENDPOINT_AUTH_ID BIGINT = @pACTION_ENDPOINT_AUTH_ID,
|
||||||
|
@ACTION_ENDPOINT_PARAMS_ID SMALLINT = @pACTION_ENDPOINT_PARAMS_ID,
|
||||||
|
@ACTION_SQL_CONNECTION_ID SMALLINT = @pACTION_SQL_CONNECTION_ID,
|
||||||
|
@ACTION_TYPE_ID TINYINT = @pACTION_TYPE_ID,
|
||||||
|
@ACTION_PRE_SQL NVARCHAR(MAX) = @pACTION_PRE_SQL,
|
||||||
|
@ACTION_HEADER_SQL NVARCHAR(MAX) = @pACTION_HEADER_SQL,
|
||||||
|
@ACTION_BODY_SQL NVARCHAR(MAX) = @pACTION_BODY_SQL,
|
||||||
|
@ACTION_POST_SQL NVARCHAR(MAX) = @pACTION_POST_SQL,
|
||||||
|
@ACTION_ERROR_ACTION_ID TINYINT = @pACTION_ERROR_ACTION_ID,
|
||||||
|
@ENDPOINT_ACTIVE BIT = @pENDPOINT_ACTIVE,
|
||||||
|
@ENDPOINT_DESCRIPTION NVARCHAR(250) = @pENDPOINT_DESCRIPTION,
|
||||||
|
@ENDPOINT_URI NVARCHAR(2000) = @pENDPOINT_URI,
|
||||||
|
@ENDPOINT_AUTH_ACTIVE BIT = @pENDPOINT_AUTH_ACTIVE,
|
||||||
|
@ENDPOINT_AUTH_DESCRIPTION NVARCHAR(250) = @pENDPOINT_AUTH_DESCRIPTION,
|
||||||
|
@ENDPOINT_AUTH_TYPE_ID TINYINT = @pENDPOINT_AUTH_TYPE_ID,
|
||||||
|
@ENDPOINT_AUTH_API_KEY NVARCHAR(150) = @pENDPOINT_AUTH_API_KEY,
|
||||||
|
@ENDPOINT_AUTH_API_VALUE NVARCHAR(150) = @pENDPOINT_AUTH_API_VALUE,
|
||||||
|
@ENDPOINT_AUTH_API_KEY_ADD_TO_ID BIT = @pENDPOINT_AUTH_API_KEY_ADD_TO_ID,
|
||||||
|
@ENDPOINT_AUTH_TOKEN NVARCHAR(150) = @pENDPOINT_AUTH_TOKEN,
|
||||||
|
@ENDPOINT_AUTH_USERNAME NVARCHAR(100) = @pENDPOINT_AUTH_USERNAME,
|
||||||
|
@ENDPOINT_AUTH_PASSWORD NVARCHAR(100) = @pENDPOINT_AUTH_PASSWORD,
|
||||||
|
@ENDPOINT_AUTH_DOMAIN NVARCHAR(50) = @pENDPOINT_AUTH_DOMAIN,
|
||||||
|
@ENDPOINT_AUTH_WORKSTATION NVARCHAR(50) = @pENDPOINT_AUTH_WORKSTATION,
|
||||||
|
@PROFILE_ACTIVE BIT = @pPROFILE_ACTIVE,
|
||||||
|
@PROFILE_TYPE_ID TINYINT = @pPROFILE_TYPE_ID,
|
||||||
|
@PROFILE_MANDANTOR NVARCHAR(50) = @pPROFILE_MANDANTOR,
|
||||||
|
@PROFILE_NAME NVARCHAR(50) = @pPROFILE_NAME,
|
||||||
|
@PROFILE_DESCRIPTION NVARCHAR(250) = @pPROFILE_DESCRIPTION,
|
||||||
|
@PROFILE_LOG_LEVEL_ID TINYINT = @pPROFILE_LOG_LEVEL_ID,
|
||||||
|
@PROFILE_LANGUAGE_ID SMALLINT = @pPROFILE_LANGUAGE_ID,
|
||||||
|
@RESULT_ACTION_ID BIGINT = @pRESULT_ACTION_ID,
|
||||||
|
@RESULT_STATUS_ID SMALLINT = @pRESULT_STATUS_ID,
|
||||||
|
@RESULT_TYPE_ID TINYINT = @pRESULT_TYPE_ID,
|
||||||
|
@RESULT_HEADER NVARCHAR(MAX) = @pRESULT_HEADER,
|
||||||
|
@RESULT_BODY NVARCHAR(MAX) = @pRESULT_BODY,
|
||||||
|
@RESULT_INFO NVARCHAR(MAX) = @pRESULT_INFO,
|
||||||
|
@RESULT_ERROR NVARCHAR(MAX) = @pRESULT_ERROR,
|
||||||
|
@ENDPOINT_PARAMS_ACTIVE BIT = @pENDPOINT_PARAMS_ACTIVE,
|
||||||
|
@ENDPOINT_PARAMS_DESCRIPTION NVARCHAR(250) = @pENDPOINT_PARAMS_DESCRIPTION,
|
||||||
|
@ENDPOINT_PARAMS_GROUP_ID SMALLINT = @pENDPOINT_PARAMS_GROUP_ID,
|
||||||
|
@ENDPOINT_PARAMS_SEQUENCE TINYINT = @pENDPOINT_PARAMS_SEQUENCE,
|
||||||
|
@ENDPOINT_PARAMS_KEY NVARCHAR(150) = @pENDPOINT_PARAMS_KEY,
|
||||||
|
@ENDPOINT_PARAMS_VALUE NVARCHAR(150) = @pENDPOINT_PARAMS_VALUE;
|
||||||
|
|
||||||
|
-- declare runtime vars
|
||||||
|
DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||||
|
DECLARE @RETURN_STATUS INT = 0,
|
||||||
|
@RETURN_STATUS_TEXT NVARCHAR(MAX) = 'START PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--=================================================-- Output parameters --================================================--
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '';
|
||||||
|
PRINT 'PARAMETER01 - @ENTITY: ' + ISNULL(CONVERT(NVARCHAR(25), @ENTITY), 'NULL');
|
||||||
|
PRINT 'PARAMETER02 - @ADDED_WHO: ' + ISNULL(CONVERT(NVARCHAR(50), @ADDED_WHO), 'NULL');
|
||||||
|
PRINT 'PARAMETER03 - @ADDED_WHEN: ' + ISNULL(CONVERT(NVARCHAR(30), @ADDED_WHEN), 'NULL');
|
||||||
|
PRINT 'PARAMETER04 - @ACTION_PROFILE_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_PROFILE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER05 - @ACTION_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @ACTION_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER06 - @ACTION_SEQUENCE: ' + ISNULL(CONVERT(NVARCHAR(3), @ACTION_SEQUENCE), 'NULL');
|
||||||
|
PRINT 'PARAMETER07 - @ACTION_ENDPOINT_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_ENDPOINT_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER08 - @ACTION_ENDPOINT_AUTH_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_ENDPOINT_AUTH_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER09 - @ACTION_ENDPOINT_PARAMS_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_ENDPOINT_PARAMS_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER10 - @ACTION_SQL_CONNECTION_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_SQL_CONNECTION_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER11 - @ACTION_TYPE_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @ACTION_TYPE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER12 - @ACTION_PRE_SQL: ' + ISNULL(CONVERT(NVARCHAR(100), @ACTION_PRE_SQL), 'NULL');
|
||||||
|
PRINT 'PARAMETER13 - @ACTION_HEADER_SQL: ' + ISNULL(CONVERT(NVARCHAR(100), @ACTION_HEADER_SQL), 'NULL');
|
||||||
|
PRINT 'PARAMETER14 - @ACTION_BODY_SQL: ' + ISNULL(CONVERT(NVARCHAR(100), @ACTION_BODY_SQL), 'NULL');
|
||||||
|
PRINT 'PARAMETER15 - @ACTION_POST_SQL: ' + ISNULL(CONVERT(NVARCHAR(100), @ACTION_POST_SQL), 'NULL');
|
||||||
|
PRINT 'PARAMETER16 - @ACTION_ERROR_ACTION_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @ACTION_ERROR_ACTION_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER17 - @ENDPOINT_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @ENDPOINT_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER18 - @ENDPOINT_DESCRIPTION: ' + ISNULL(CONVERT(NVARCHAR(250), @ENDPOINT_DESCRIPTION), 'NULL');
|
||||||
|
PRINT 'PARAMETER19 - @ENDPOINT_URI: ' + ISNULL(CONVERT(NVARCHAR(2000), @ENDPOINT_URI), 'NULL');
|
||||||
|
PRINT 'PARAMETER20 - @ENDPOINT_AUTH_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @ENDPOINT_AUTH_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER21 - @ENDPOINT_AUTH_DESCRIPTION: ' + ISNULL(CONVERT(NVARCHAR(250), @ENDPOINT_AUTH_DESCRIPTION), 'NULL');
|
||||||
|
PRINT 'PARAMETER22 - @ENDPOINT_AUTH_TYPE_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @ENDPOINT_AUTH_TYPE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER23 - @ENDPOINT_AUTH_API_KEY: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_AUTH_API_KEY), 'NULL');
|
||||||
|
PRINT 'PARAMETER24 - @ENDPOINT_AUTH_API_VALUE: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_AUTH_API_VALUE), 'NULL');
|
||||||
|
PRINT 'PARAMETER25 - @ENDPOINT_AUTH_API_KEY_ADD_TO_ID: ' + ISNULL(CONVERT(NVARCHAR(1), @ENDPOINT_AUTH_API_KEY_ADD_TO_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER26 - @ENDPOINT_AUTH_TOKEN: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_AUTH_TOKEN), 'NULL');
|
||||||
|
PRINT 'PARAMETER27 - @ENDPOINT_AUTH_USERNAME: ' + ISNULL(CONVERT(NVARCHAR(100), @ENDPOINT_AUTH_USERNAME), 'NULL');
|
||||||
|
PRINT 'PARAMETER28 - @ENDPOINT_AUTH_PASSWORD: ' + ISNULL(CONVERT(NVARCHAR(100), @ENDPOINT_AUTH_PASSWORD), 'NULL');
|
||||||
|
PRINT 'PARAMETER29 - @ENDPOINT_AUTH_DOMAIN: ' + ISNULL(CONVERT(NVARCHAR(50), @ENDPOINT_AUTH_DOMAIN), 'NULL');
|
||||||
|
PRINT 'PARAMETER30 - @ENDPOINT_AUTH_WORKSTATION: ' + ISNULL(CONVERT(NVARCHAR(50), @ENDPOINT_AUTH_WORKSTATION), 'NULL');
|
||||||
|
PRINT 'PARAMETER31 - @PROFILE_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @PROFILE_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER32 - @PROFILE_TYPE_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @PROFILE_TYPE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER33 - @PROFILE_MANDANTOR: ' + ISNULL(CONVERT(NVARCHAR(50), @PROFILE_MANDANTOR), 'NULL');
|
||||||
|
PRINT 'PARAMETER34 - @PROFILE_NAME: ' + ISNULL(CONVERT(NVARCHAR(50), @PROFILE_NAME), 'NULL');
|
||||||
|
PRINT 'PARAMETER35 - @PROFILE_DESCRIPTION: ' + ISNULL(CONVERT(NVARCHAR(250), @PROFILE_DESCRIPTION), 'NULL');
|
||||||
|
PRINT 'PARAMETER36 - @PROFILE_LOG_LEVEL_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @PROFILE_LOG_LEVEL_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER37 - @PROFILE_LANGUAGE_ID: ' + ISNULL(CONVERT(NVARCHAR(10), @PROFILE_LANGUAGE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER38 - @RESULT_ACTION_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @RESULT_ACTION_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER39 - @RESULT_STATUS_ID: ' + ISNULL(CONVERT(NVARCHAR(10), @RESULT_STATUS_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER40 - @RESULT_TYPE_ID: ' + ISNULL(CONVERT(NVARCHAR(1), @RESULT_TYPE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER41 - @RESULT_HEADER: ' + ISNULL(CONVERT(NVARCHAR(100), @RESULT_HEADER), 'NULL');
|
||||||
|
PRINT 'PARAMETER42 - @RESULT_BODY: ' + ISNULL(CONVERT(NVARCHAR(100), @RESULT_BODY), 'NULL');
|
||||||
|
PRINT 'PARAMETER43 - @RESULT_INFO: ' + ISNULL(CONVERT(NVARCHAR(100), @RESULT_INFO), 'NULL');
|
||||||
|
PRINT 'PARAMETER44 - @RESULT_ERROR: ' + ISNULL(CONVERT(NVARCHAR(100), @RESULT_ERROR), 'NULL');
|
||||||
|
PRINT 'PARAMETER45 - @ENDPOINT_PARAMS_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @ENDPOINT_PARAMS_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER46 - @ENDPOINT_PARAMS_DESCRIPTION: ' + ISNULL(CONVERT(NVARCHAR(250), @ENDPOINT_PARAMS_DESCRIPTION), 'NULL');
|
||||||
|
PRINT 'PARAMETER47 - @ENDPOINT_PARAMS_GROUP_ID: ' + ISNULL(CONVERT(NVARCHAR(10), @ENDPOINT_PARAMS_GROUP_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER48 - @ENDPOINT_PARAMS_SEQUENCE: ' + ISNULL(CONVERT(NVARCHAR(5), @ENDPOINT_PARAMS_SEQUENCE), 'NULL');
|
||||||
|
PRINT 'PARAMETER49 - @ENDPOINT_PARAMS_KEY: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_PARAMS_KEY), 'NULL');
|
||||||
|
PRINT 'PARAMETER50 - @ENDPOINT_PARAMS_VALUE: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_PARAMS_VALUE), 'NULL');
|
||||||
|
PRINT 'PARAMETER51 - @oGUID (OUT): ' + ISNULL(CONVERT(NVARCHAR(30), @oGUID), 'NULL');
|
||||||
|
PRINT '';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--================================================-- Validation --=======================================================--
|
||||||
|
IF (@ENTITY NOT IN ('ACTION', 'ENDPOINT', 'ENDPOINT_AUTH', 'ENDPOINT_PARAMS', 'PROFILE', 'RESULT')) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50101;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: Unknown entity "' + @ENTITY + '". Allowed: ACTION, ENDPOINT, ENDPOINT_AUTH, ENDPOINT_PARAMS, PROFILE, RESULT.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--===============================================-- Main Processing --===================================================--
|
||||||
|
BEGIN TRY
|
||||||
|
|
||||||
|
BEGIN TRANSACTION;
|
||||||
|
|
||||||
|
IF (@ENTITY = 'ACTION') BEGIN
|
||||||
|
|
||||||
|
IF (@ACTION_PROFILE_ID IS NULL OR @ACTION_ENDPOINT_ID IS NULL) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50102;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ACTION requires @pACTION_PROFILE_ID and @pACTION_ENDPOINT_ID.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
INSERT INTO [dbo].[TBREC_CFG_ACTION] (
|
||||||
|
[PROFILE_ID],
|
||||||
|
[ACTIVE],
|
||||||
|
[SEQUENCE],
|
||||||
|
[ENDPOINT_ID],
|
||||||
|
[ENDPOINT_AUTH_ID],
|
||||||
|
[ENDPOINT_PARAMS_ID],
|
||||||
|
[SQL_CONNECTION_ID],
|
||||||
|
[TYPE_ID],
|
||||||
|
[PREPROCESSING_QUERY],
|
||||||
|
[HEADER_QUERY],
|
||||||
|
[BODY_QUERY],
|
||||||
|
[POSTPROCESSING_QUERY],
|
||||||
|
[ERROR_ACTION_ID],
|
||||||
|
[ADDED_WHO],
|
||||||
|
[ADDED_WHEN]
|
||||||
|
) VALUES (
|
||||||
|
@ACTION_PROFILE_ID,
|
||||||
|
ISNULL(@ACTION_ACTIVE,1),
|
||||||
|
ISNULL(@ACTION_SEQUENCE,0),
|
||||||
|
@ACTION_ENDPOINT_ID,
|
||||||
|
@ACTION_ENDPOINT_AUTH_ID,
|
||||||
|
@ACTION_ENDPOINT_PARAMS_ID,
|
||||||
|
@ACTION_SQL_CONNECTION_ID,
|
||||||
|
ISNULL(@ACTION_TYPE_ID,1),
|
||||||
|
@ACTION_PRE_SQL,
|
||||||
|
@ACTION_HEADER_SQL,
|
||||||
|
@ACTION_BODY_SQL,
|
||||||
|
@ACTION_POST_SQL,
|
||||||
|
ISNULL(@ACTION_ERROR_ACTION_ID,0),
|
||||||
|
@ADDED_WHO,
|
||||||
|
@ADDED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @oGUID = SCOPE_IDENTITY();
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Inserted ACTION with GUID=' + CONVERT(NVARCHAR(30), @oGUID);
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'ENDPOINT') BEGIN
|
||||||
|
|
||||||
|
IF (@ENDPOINT_URI IS NULL) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50103;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT requires @pENDPOINT_URI.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
INSERT INTO [dbo].[TBREC_CFG_ENDPOINT] (
|
||||||
|
[ACTIVE],
|
||||||
|
[DESCRIPTION],
|
||||||
|
[URI],
|
||||||
|
[ADDED_WHO],
|
||||||
|
[ADDED_WHEN]
|
||||||
|
) VALUES (
|
||||||
|
ISNULL(@ENDPOINT_ACTIVE,1),
|
||||||
|
@ENDPOINT_DESCRIPTION,
|
||||||
|
@ENDPOINT_URI,
|
||||||
|
@ADDED_WHO,
|
||||||
|
@ADDED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @oGUID = SCOPE_IDENTITY();
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Inserted ENDPOINT with GUID=' + CONVERT(NVARCHAR(30), @oGUID);
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'ENDPOINT_AUTH') BEGIN
|
||||||
|
|
||||||
|
INSERT INTO [dbo].[TBREC_CFG_ENDPOINT_AUTH] (
|
||||||
|
[ACTIVE],
|
||||||
|
[DESCRIPTION],
|
||||||
|
[TYPE_ID],
|
||||||
|
[API_KEY],
|
||||||
|
[API_VALUE],
|
||||||
|
[API_KEY_ADD_TO_ID],
|
||||||
|
[TOKEN],
|
||||||
|
[USERNAME],
|
||||||
|
[PASSWORD],
|
||||||
|
[DOMAIN],
|
||||||
|
[WORKSTATION],
|
||||||
|
[ADDED_WHO],
|
||||||
|
[ADDED_WHEN]
|
||||||
|
) VALUES (
|
||||||
|
ISNULL(@ENDPOINT_AUTH_ACTIVE,1),
|
||||||
|
@ENDPOINT_AUTH_DESCRIPTION,
|
||||||
|
ISNULL(@ENDPOINT_AUTH_TYPE_ID,0),
|
||||||
|
@ENDPOINT_AUTH_API_KEY,
|
||||||
|
@ENDPOINT_AUTH_API_VALUE,
|
||||||
|
@ENDPOINT_AUTH_API_KEY_ADD_TO_ID,
|
||||||
|
@ENDPOINT_AUTH_TOKEN,
|
||||||
|
@ENDPOINT_AUTH_USERNAME,
|
||||||
|
@ENDPOINT_AUTH_PASSWORD,
|
||||||
|
@ENDPOINT_AUTH_DOMAIN,
|
||||||
|
@ENDPOINT_AUTH_WORKSTATION,
|
||||||
|
@ADDED_WHO,
|
||||||
|
@ADDED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @oGUID = SCOPE_IDENTITY();
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Inserted ENDPOINT_AUTH with GUID=' + CONVERT(NVARCHAR(30), @oGUID);
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'PROFILE') BEGIN
|
||||||
|
|
||||||
|
IF (@PROFILE_NAME IS NULL) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50104;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: PROFILE requires @pPROFILE_NAME.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
INSERT INTO [dbo].[TBREC_CFG_PROFILE] (
|
||||||
|
[ACTIVE],
|
||||||
|
[TYPE_ID],
|
||||||
|
[MANDANTOR],
|
||||||
|
[PROFILE_NAME],
|
||||||
|
[DESCRIPTION],
|
||||||
|
[LOG_LEVEL_ID],
|
||||||
|
[LANGUAGE_ID],
|
||||||
|
[ADDED_WHO],
|
||||||
|
[ADDED_WHEN]
|
||||||
|
) VALUES (
|
||||||
|
ISNULL(@PROFILE_ACTIVE,1),
|
||||||
|
ISNULL(@PROFILE_TYPE_ID,1),
|
||||||
|
ISNULL(@PROFILE_MANDANTOR,'DEFAULT'),
|
||||||
|
@PROFILE_NAME,
|
||||||
|
@PROFILE_DESCRIPTION,
|
||||||
|
ISNULL(@PROFILE_LOG_LEVEL_ID,4),
|
||||||
|
ISNULL(@PROFILE_LANGUAGE_ID,1031),
|
||||||
|
@ADDED_WHO,
|
||||||
|
@ADDED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @oGUID = SCOPE_IDENTITY();
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[TBREC_RUN_PROFILE] WHERE [PROFILE_ID] = @oGUID) BEGIN
|
||||||
|
INSERT INTO [dbo].[TBREC_RUN_PROFILE] ([PROFILE_ID])
|
||||||
|
VALUES (@oGUID);
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Inserted PROFILE with GUID=' + CONVERT(NVARCHAR(30), @oGUID);
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'RESULT') BEGIN
|
||||||
|
|
||||||
|
IF (@RESULT_ACTION_ID IS NULL OR @RESULT_STATUS_ID IS NULL OR @RESULT_TYPE_ID IS NULL) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50105;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: RESULT requires @pRESULT_ACTION_ID, @pRESULT_STATUS_ID and @pRESULT_TYPE_ID.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
INSERT INTO [dbo].[TBREC_OUT_RESULT] (
|
||||||
|
[ACTION_ID],
|
||||||
|
[STATUS_ID],
|
||||||
|
[RESULT_TYPE_ID],
|
||||||
|
[RESULT_HEADER],
|
||||||
|
[RESULT_BODY],
|
||||||
|
[RESULT_INFO],
|
||||||
|
[RESULT_ERROR],
|
||||||
|
[ADDED_WHO],
|
||||||
|
[ADDED_WHEN]
|
||||||
|
) VALUES (
|
||||||
|
@RESULT_ACTION_ID,
|
||||||
|
@RESULT_STATUS_ID,
|
||||||
|
@RESULT_TYPE_ID,
|
||||||
|
@RESULT_HEADER,
|
||||||
|
@RESULT_BODY,
|
||||||
|
@RESULT_INFO,
|
||||||
|
@RESULT_ERROR,
|
||||||
|
@ADDED_WHO,
|
||||||
|
@ADDED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @oGUID = SCOPE_IDENTITY();
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Inserted RESULT with GUID=' + CONVERT(NVARCHAR(30), @oGUID);
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'ENDPOINT_PARAMS') BEGIN
|
||||||
|
|
||||||
|
IF (@ENDPOINT_PARAMS_GROUP_ID IS NULL) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50106;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT_PARAMS requires @pENDPOINT_PARAMS_GROUP_ID.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
INSERT INTO [dbo].[TBREC_CFG_ENDPOINT_PARAMS] (
|
||||||
|
[ACTIVE],
|
||||||
|
[DESCRIPTION],
|
||||||
|
[GROUP_ID],
|
||||||
|
[SEQUENCE],
|
||||||
|
[KEY],
|
||||||
|
[VALUE],
|
||||||
|
[ADDED_WHO],
|
||||||
|
[ADDED_WHEN]
|
||||||
|
) VALUES (
|
||||||
|
ISNULL(@ENDPOINT_PARAMS_ACTIVE,1),
|
||||||
|
@ENDPOINT_PARAMS_DESCRIPTION,
|
||||||
|
@ENDPOINT_PARAMS_GROUP_ID,
|
||||||
|
@ENDPOINT_PARAMS_SEQUENCE,
|
||||||
|
@ENDPOINT_PARAMS_KEY,
|
||||||
|
@ENDPOINT_PARAMS_VALUE,
|
||||||
|
@ADDED_WHO,
|
||||||
|
@ADDED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @oGUID = SCOPE_IDENTITY();
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Inserted ENDPOINT_PARAMS with GUID=' + CONVERT(NVARCHAR(30), @oGUID);
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
END;
|
||||||
|
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF (@RETURN_STATUS > 0) BEGIN
|
||||||
|
IF (XACT_STATE() <> 0) ROLLBACK TRANSACTION;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
COMMIT TRANSACTION;
|
||||||
|
END;
|
||||||
|
|
||||||
|
--======================================================-- Output result --======================================================--
|
||||||
|
SET @RETURN_STATUS_TEXT = 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
|
||||||
|
PRINT '';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
|
||||||
|
END TRY BEGIN CATCH
|
||||||
|
|
||||||
|
IF (XACT_STATE() <> 0) ROLLBACK TRANSACTION;
|
||||||
|
|
||||||
|
--======================================================-- Output result --======================================================--
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ' + ERROR_MESSAGE();
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
|
||||||
|
PRINT '';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
|
||||||
|
END CATCH;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
END;
|
||||||
453
current/[DD_ECM]-Database/ReC/[PRREC_UPDATE_OBJECT].sql
Normal file
453
current/[DD_ECM]-Database/ReC/[PRREC_UPDATE_OBJECT].sql
Normal file
@@ -0,0 +1,453 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- [PRREC_UPDATE_OBJECT]
|
||||||
|
-- =================================================================
|
||||||
|
-- Updates one record in a given Entity with validation of allowed values
|
||||||
|
-- Setting a parameter with NULL = keeps the current value
|
||||||
|
--
|
||||||
|
-- Returns: INT Value - 0 = Everything worked well
|
||||||
|
-- =================================================================
|
||||||
|
-- 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: 22.12.2025 / MK
|
||||||
|
-- Version Date / Editor: 22.12.2025 / MK
|
||||||
|
-- Version Number: 1.0.0.0
|
||||||
|
-- =================================================================
|
||||||
|
-- History:
|
||||||
|
-- 22.12.2025 / MK - First Version
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [dbo].[PRREC_UPDATE_OBJECT] (
|
||||||
|
@pENTITY NVARCHAR(25) = 'ACTION', -- Target entity: ACTION, ENDPOINT, ENDPOINT_AUTH, ENDPOINT_PARAMS, PROFILE, RESULT
|
||||||
|
@pGUID BIGINT = NULL, -- Target GUID to update (required)
|
||||||
|
@pCHANGED_WHO NVARCHAR(50) = NULL, -- User or function of the Update
|
||||||
|
@pCHANGED_WHEN DATETIME = NULL, -- Datetime of the Update
|
||||||
|
@pACTION_PROFILE_ID BIGINT = NULL, -- ACTION: New profile GUID
|
||||||
|
@pACTION_ACTIVE BIT = NULL, -- ACTION: New active flag
|
||||||
|
@pACTION_SEQUENCE TINYINT = NULL, -- ACTION: New sequence/order
|
||||||
|
@pACTION_ENDPOINT_ID BIGINT = NULL, -- ACTION: New endpoint GUID
|
||||||
|
@pACTION_ENDPOINT_AUTH_ID BIGINT = NULL, -- ACTION: New endpoint auth GUID
|
||||||
|
@pACTION_ENDPOINT_PARAMS_ID SMALLINT = NULL, -- ACTION: New endpoint params group GUID
|
||||||
|
@pACTION_SQL_CONNECTION_ID SMALLINT = NULL, -- ACTION: New SQL connection GUID
|
||||||
|
@pACTION_TYPE_ID TINYINT = NULL, -- ACTION: New HTTP method id (0..9)
|
||||||
|
@pACTION_PRE_SQL NVARCHAR(MAX) = NULL, -- ACTION: New SQL before request
|
||||||
|
@pACTION_HEADER_SQL NVARCHAR(MAX) = NULL, -- ACTION: New SQL for headers
|
||||||
|
@pACTION_BODY_SQL NVARCHAR(MAX) = NULL, -- ACTION: New SQL for body
|
||||||
|
@pACTION_POST_SQL NVARCHAR(MAX) = NULL, -- ACTION: New SQL after request
|
||||||
|
@pACTION_ERROR_ACTION_ID TINYINT = NULL, -- ACTION: New error behavior (0=STOP,1=CONTINUE)
|
||||||
|
@pENDPOINT_ACTIVE BIT = NULL, -- ENDPOINT: New active flag
|
||||||
|
@pENDPOINT_DESCRIPTION NVARCHAR(250) = NULL, -- ENDPOINT: New description
|
||||||
|
@pENDPOINT_URI NVARCHAR(2000) = NULL, -- ENDPOINT: New target URI
|
||||||
|
@pENDPOINT_AUTH_ACTIVE BIT = NULL, -- ENDPOINT_AUTH: New active flag
|
||||||
|
@pENDPOINT_AUTH_DESCRIPTION NVARCHAR(250) = NULL, -- ENDPOINT_AUTH: New description
|
||||||
|
@pENDPOINT_AUTH_TYPE_ID TINYINT = NULL, -- ENDPOINT_AUTH: New auth type id (0..9)
|
||||||
|
@pENDPOINT_AUTH_API_KEY NVARCHAR(150) = NULL, -- ENDPOINT_AUTH: New API key name/header
|
||||||
|
@pENDPOINT_AUTH_API_VALUE NVARCHAR(150) = NULL, -- ENDPOINT_AUTH: New API key value
|
||||||
|
@pENDPOINT_AUTH_API_KEY_ADD_TO_ID BIT = NULL, -- ENDPOINT_AUTH: New API key placement (0=HEADER,1=QUERY)
|
||||||
|
@pENDPOINT_AUTH_TOKEN NVARCHAR(150) = NULL, -- ENDPOINT_AUTH: New bearer/JWT token
|
||||||
|
@pENDPOINT_AUTH_USERNAME NVARCHAR(100) = NULL, -- ENDPOINT_AUTH: New username
|
||||||
|
@pENDPOINT_AUTH_PASSWORD NVARCHAR(100) = NULL, -- ENDPOINT_AUTH: New password
|
||||||
|
@pENDPOINT_AUTH_DOMAIN NVARCHAR(50) = NULL, -- ENDPOINT_AUTH: New domain (NTLM)
|
||||||
|
@pENDPOINT_AUTH_WORKSTATION NVARCHAR(50) = NULL, -- ENDPOINT_AUTH: New workstation (NTLM)
|
||||||
|
@pENDPOINT_PARAMS_ACTIVE BIT = NULL, -- ENDPOINT_PARAMS: New active flag
|
||||||
|
@pENDPOINT_PARAMS_DESCRIPTION NVARCHAR(250) = NULL, -- ENDPOINT_PARAMS: New description
|
||||||
|
@pENDPOINT_PARAMS_GROUP_ID SMALLINT = NULL, -- ENDPOINT_PARAMS: New parameter group id
|
||||||
|
@pENDPOINT_PARAMS_SEQUENCE TINYINT = NULL, -- ENDPOINT_PARAMS: New sequence/order
|
||||||
|
@pENDPOINT_PARAMS_KEY NVARCHAR(150) = NULL, -- ENDPOINT_PARAMS: New parameter key/name
|
||||||
|
@pENDPOINT_PARAMS_VALUE NVARCHAR(150) = NULL, -- ENDPOINT_PARAMS: New parameter value
|
||||||
|
@pPROFILE_ACTIVE BIT = NULL, -- PROFILE: New active flag
|
||||||
|
@pPROFILE_TYPE_ID TINYINT = NULL, -- PROFILE: New protocol type id (1=HTTP,2=HTTPS)
|
||||||
|
@pPROFILE_MANDANTOR NVARCHAR(50) = NULL, -- PROFILE: New tenant/mandator
|
||||||
|
@pPROFILE_NAME NVARCHAR(50) = NULL, -- PROFILE: New profile name
|
||||||
|
@pPROFILE_DESCRIPTION NVARCHAR(250) = NULL, -- PROFILE: New description
|
||||||
|
@pPROFILE_LOG_LEVEL_ID TINYINT = NULL, -- PROFILE: New log level id (0..6)
|
||||||
|
@pPROFILE_LANGUAGE_ID SMALLINT = NULL, -- PROFILE: New language id (1031/1033)
|
||||||
|
@pPROFILE_FIRST_RUN DATETIME = NULL, -- PROFILE: New first run timestamp (RUN_PROFILE)
|
||||||
|
@pPROFILE_LAST_RUN DATETIME = NULL, -- PROFILE: New last run timestamp (RUN_PROFILE)
|
||||||
|
@pPROFILE_LAST_RESULT NVARCHAR(250) = NULL, -- PROFILE: New last result text (RUN_PROFILE)
|
||||||
|
@pRESULT_ACTION_ID BIGINT = NULL, -- RESULT: New action GUID
|
||||||
|
@pRESULT_STATUS_ID SMALLINT = NULL, -- RESULT: New HTTP status code
|
||||||
|
@pRESULT_TYPE_ID TINYINT = NULL, -- RESULT: 1 = Pre; 2 = Main; 3 = Post
|
||||||
|
@pRESULT_HEADER NVARCHAR(MAX) = NULL, -- RESULT: New response header
|
||||||
|
@pRESULT_BODY NVARCHAR(MAX) = NULL, -- RESULT: New response body
|
||||||
|
@pRESULT_INFO NVARCHAR(MAX) = NULL, -- RESULT: Optional Response info text
|
||||||
|
@pRESULT_ERROR NVARCHAR(MAX) = NULL -- RESULT: Optional Response error text
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
SET XACT_ABORT ON;
|
||||||
|
|
||||||
|
-- declare new vars because of parameter sniffing
|
||||||
|
DECLARE @ENTITY NVARCHAR(25) = UPPER(LTRIM(RTRIM(ISNULL(@pENTITY, 'ACTION')))),
|
||||||
|
@GUID BIGINT = @pGUID,
|
||||||
|
@CHANGED_WHO NVARCHAR(50) = ISNULL(@pCHANGED_WHO, OBJECT_NAME(@@PROCID)),
|
||||||
|
@CHANGED_WHEN DATETIME = ISNULL(@pCHANGED_WHEN,GetDate()),
|
||||||
|
@ACTION_PROFILE_ID BIGINT = @pACTION_PROFILE_ID,
|
||||||
|
@ACTION_ACTIVE BIT = @pACTION_ACTIVE,
|
||||||
|
@ACTION_SEQUENCE TINYINT = @pACTION_SEQUENCE,
|
||||||
|
@ACTION_ENDPOINT_ID BIGINT = @pACTION_ENDPOINT_ID,
|
||||||
|
@ACTION_ENDPOINT_AUTH_ID BIGINT = @pACTION_ENDPOINT_AUTH_ID,
|
||||||
|
@ACTION_ENDPOINT_PARAMS_ID SMALLINT = @pACTION_ENDPOINT_PARAMS_ID,
|
||||||
|
@ACTION_SQL_CONNECTION_ID SMALLINT = @pACTION_SQL_CONNECTION_ID,
|
||||||
|
@ACTION_TYPE_ID TINYINT = @pACTION_TYPE_ID,
|
||||||
|
@ACTION_PRE_SQL NVARCHAR(MAX) = @pACTION_PRE_SQL,
|
||||||
|
@ACTION_HEADER_SQL NVARCHAR(MAX) = @pACTION_HEADER_SQL,
|
||||||
|
@ACTION_BODY_SQL NVARCHAR(MAX) = @pACTION_BODY_SQL,
|
||||||
|
@ACTION_POST_SQL NVARCHAR(MAX) = @pACTION_POST_SQL,
|
||||||
|
@ACTION_ERROR_ACTION_ID TINYINT = @pACTION_ERROR_ACTION_ID,
|
||||||
|
@ENDPOINT_ACTIVE BIT = @pENDPOINT_ACTIVE,
|
||||||
|
@ENDPOINT_DESCRIPTION NVARCHAR(250) = @pENDPOINT_DESCRIPTION,
|
||||||
|
@ENDPOINT_URI NVARCHAR(2000) = @pENDPOINT_URI,
|
||||||
|
@ENDPOINT_AUTH_ACTIVE BIT = @pENDPOINT_AUTH_ACTIVE,
|
||||||
|
@ENDPOINT_AUTH_DESCRIPTION NVARCHAR(250) = @pENDPOINT_AUTH_DESCRIPTION,
|
||||||
|
@ENDPOINT_AUTH_TYPE_ID TINYINT = @pENDPOINT_AUTH_TYPE_ID,
|
||||||
|
@ENDPOINT_AUTH_API_KEY NVARCHAR(150) = @pENDPOINT_AUTH_API_KEY,
|
||||||
|
@ENDPOINT_AUTH_API_VALUE NVARCHAR(150) = @pENDPOINT_AUTH_API_VALUE,
|
||||||
|
@ENDPOINT_AUTH_API_KEY_ADD_TO_ID BIT = @pENDPOINT_AUTH_API_KEY_ADD_TO_ID,
|
||||||
|
@ENDPOINT_AUTH_TOKEN NVARCHAR(150) = @pENDPOINT_AUTH_TOKEN,
|
||||||
|
@ENDPOINT_AUTH_USERNAME NVARCHAR(100) = @pENDPOINT_AUTH_USERNAME,
|
||||||
|
@ENDPOINT_AUTH_PASSWORD NVARCHAR(100) = @pENDPOINT_AUTH_PASSWORD,
|
||||||
|
@ENDPOINT_AUTH_DOMAIN NVARCHAR(50) = @pENDPOINT_AUTH_DOMAIN,
|
||||||
|
@ENDPOINT_AUTH_WORKSTATION NVARCHAR(50) = @pENDPOINT_AUTH_WORKSTATION,
|
||||||
|
@ENDPOINT_PARAMS_ACTIVE BIT = @pENDPOINT_PARAMS_ACTIVE,
|
||||||
|
@ENDPOINT_PARAMS_DESCRIPTION NVARCHAR(250) = @pENDPOINT_PARAMS_DESCRIPTION,
|
||||||
|
@ENDPOINT_PARAMS_GROUP_ID SMALLINT = @pENDPOINT_PARAMS_GROUP_ID,
|
||||||
|
@ENDPOINT_PARAMS_SEQUENCE TINYINT = @pENDPOINT_PARAMS_SEQUENCE,
|
||||||
|
@ENDPOINT_PARAMS_KEY NVARCHAR(150) = @pENDPOINT_PARAMS_KEY,
|
||||||
|
@ENDPOINT_PARAMS_VALUE NVARCHAR(150) = @pENDPOINT_PARAMS_VALUE,
|
||||||
|
@PROFILE_ACTIVE BIT = @pPROFILE_ACTIVE,
|
||||||
|
@PROFILE_TYPE_ID TINYINT = @pPROFILE_TYPE_ID,
|
||||||
|
@PROFILE_MANDANTOR NVARCHAR(50) = @pPROFILE_MANDANTOR,
|
||||||
|
@PROFILE_NAME NVARCHAR(50) = @pPROFILE_NAME,
|
||||||
|
@PROFILE_DESCRIPTION NVARCHAR(250) = @pPROFILE_DESCRIPTION,
|
||||||
|
@PROFILE_LOG_LEVEL_ID TINYINT = @pPROFILE_LOG_LEVEL_ID,
|
||||||
|
@PROFILE_LANGUAGE_ID SMALLINT = @pPROFILE_LANGUAGE_ID,
|
||||||
|
@PROFILE_FIRST_RUN DATETIME = @pPROFILE_FIRST_RUN,
|
||||||
|
@PROFILE_LAST_RUN DATETIME = @pPROFILE_LAST_RUN,
|
||||||
|
@PROFILE_LAST_RESULT NVARCHAR(250) = @pPROFILE_LAST_RESULT,
|
||||||
|
@RESULT_ACTION_ID BIGINT = @pRESULT_ACTION_ID,
|
||||||
|
@RESULT_STATUS_ID SMALLINT = @pRESULT_STATUS_ID,
|
||||||
|
@RESULT_TYPE_ID TINYINT = @pRESULT_TYPE_ID,
|
||||||
|
@RESULT_HEADER NVARCHAR(MAX) = @pRESULT_HEADER,
|
||||||
|
@RESULT_BODY NVARCHAR(MAX) = @pRESULT_BODY,
|
||||||
|
@RESULT_INFO NVARCHAR(MAX) = @pRESULT_INFO,
|
||||||
|
@RESULT_ERROR NVARCHAR(MAX) = @pRESULT_ERROR;
|
||||||
|
|
||||||
|
-- declare runtime vars
|
||||||
|
DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||||
|
DECLARE @RETURN_STATUS INT = 0,
|
||||||
|
@RETURN_STATUS_TEXT NVARCHAR(MAX) = 'START PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--=================================================-- Output parameters --================================================--
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '';
|
||||||
|
PRINT 'PARAMETER01 - @ENTITY: ' + ISNULL(CONVERT(NVARCHAR(25), @ENTITY), 'NULL');
|
||||||
|
PRINT 'PARAMETER02 - @GUID: ' + ISNULL(CONVERT(NVARCHAR(30), @GUID), 'NULL');
|
||||||
|
PRINT 'PARAMETER03 - @CHANGED_WHO: ' + ISNULL(CONVERT(NVARCHAR(50), @CHANGED_WHO), 'NULL');
|
||||||
|
PRINT 'PARAMETER04 - @CHANGED_WHEN: ' + ISNULL(CONVERT(NVARCHAR(50), @CHANGED_WHEN), 'NULL');
|
||||||
|
PRINT 'PARAMETER05 - @ACTION_PROFILE_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_PROFILE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER06 - @ACTION_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @ACTION_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER07 - @ACTION_SEQUENCE: ' + ISNULL(CONVERT(NVARCHAR(3), @ACTION_SEQUENCE), 'NULL');
|
||||||
|
PRINT 'PARAMETER08 - @ACTION_ENDPOINT_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_ENDPOINT_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER09 - @ACTION_ENDPOINT_AUTH_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_ENDPOINT_AUTH_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER10 - @ACTION_ENDPOINT_PARAMS_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_ENDPOINT_PARAMS_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER11 - @ACTION_SQL_CONNECTION_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @ACTION_SQL_CONNECTION_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER12 - @ACTION_TYPE_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @ACTION_TYPE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER13 - @ACTION_PRE_SQL: ' + ISNULL(CONVERT(NVARCHAR(4000), @ACTION_PRE_SQL), 'NULL');
|
||||||
|
PRINT 'PARAMETER14 - @ACTION_HEADER_SQL: ' + ISNULL(CONVERT(NVARCHAR(4000), @ACTION_HEADER_SQL), 'NULL');
|
||||||
|
PRINT 'PARAMETER15 - @ACTION_BODY_SQL: ' + ISNULL(CONVERT(NVARCHAR(4000), @ACTION_BODY_SQL), 'NULL');
|
||||||
|
PRINT 'PARAMETER16 - @ACTION_POST_SQL: ' + ISNULL(CONVERT(NVARCHAR(4000), @ACTION_POST_SQL), 'NULL');
|
||||||
|
PRINT 'PARAMETER17 - @ACTION_ERROR_ACTION_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @ACTION_ERROR_ACTION_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER18 - @ENDPOINT_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @ENDPOINT_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER19 - @ENDPOINT_DESCRIPTION: ' + ISNULL(CONVERT(NVARCHAR(250), @ENDPOINT_DESCRIPTION), 'NULL');
|
||||||
|
PRINT 'PARAMETER20 - @ENDPOINT_URI: ' + ISNULL(CONVERT(NVARCHAR(2000), @ENDPOINT_URI), 'NULL');
|
||||||
|
PRINT 'PARAMETER21 - @ENDPOINT_AUTH_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @ENDPOINT_AUTH_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER22 - @ENDPOINT_AUTH_DESCRIPTION: ' + ISNULL(CONVERT(NVARCHAR(250), @ENDPOINT_AUTH_DESCRIPTION), 'NULL');
|
||||||
|
PRINT 'PARAMETER23 - @ENDPOINT_AUTH_TYPE_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @ENDPOINT_AUTH_TYPE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER24 - @ENDPOINT_AUTH_API_KEY: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_AUTH_API_KEY), 'NULL');
|
||||||
|
PRINT 'PARAMETER25 - @ENDPOINT_AUTH_API_VALUE: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_AUTH_API_VALUE), 'NULL');
|
||||||
|
PRINT 'PARAMETER26 - @ENDPOINT_AUTH_API_KEY_ADD_TO_ID: ' + ISNULL(CONVERT(NVARCHAR(1), @ENDPOINT_AUTH_API_KEY_ADD_TO_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER27 - @ENDPOINT_AUTH_TOKEN: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_AUTH_TOKEN), 'NULL');
|
||||||
|
PRINT 'PARAMETER28 - @ENDPOINT_AUTH_USERNAME: ' + ISNULL(CONVERT(NVARCHAR(100), @ENDPOINT_AUTH_USERNAME), 'NULL');
|
||||||
|
PRINT 'PARAMETER29 - @ENDPOINT_AUTH_PASSWORD: ' + ISNULL(CONVERT(NVARCHAR(100), @ENDPOINT_AUTH_PASSWORD), 'NULL');
|
||||||
|
PRINT 'PARAMETER30 - @ENDPOINT_AUTH_DOMAIN: ' + ISNULL(CONVERT(NVARCHAR(50), @ENDPOINT_AUTH_DOMAIN), 'NULL');
|
||||||
|
PRINT 'PARAMETER31 - @ENDPOINT_AUTH_WORKSTATION: ' + ISNULL(CONVERT(NVARCHAR(50), @ENDPOINT_AUTH_WORKSTATION), 'NULL');
|
||||||
|
PRINT 'PARAMETER32 - @ENDPOINT_PARAMS_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @ENDPOINT_PARAMS_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER33 - @ENDPOINT_PARAMS_DESCRIPTION: ' + ISNULL(CONVERT(NVARCHAR(250), @ENDPOINT_PARAMS_DESCRIPTION), 'NULL');
|
||||||
|
PRINT 'PARAMETER34 - @ENDPOINT_PARAMS_GROUP_ID: ' + ISNULL(CONVERT(NVARCHAR(10), @ENDPOINT_PARAMS_GROUP_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER35 - @ENDPOINT_PARAMS_SEQUENCE: ' + ISNULL(CONVERT(NVARCHAR(5), @ENDPOINT_PARAMS_SEQUENCE), 'NULL');
|
||||||
|
PRINT 'PARAMETER36 - @ENDPOINT_PARAMS_KEY: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_PARAMS_KEY), 'NULL');
|
||||||
|
PRINT 'PARAMETER37 - @ENDPOINT_PARAMS_VALUE: ' + ISNULL(CONVERT(NVARCHAR(150), @ENDPOINT_PARAMS_VALUE), 'NULL');
|
||||||
|
PRINT 'PARAMETER38 - @PROFILE_ACTIVE: ' + ISNULL(CONVERT(NVARCHAR(1), @PROFILE_ACTIVE), 'NULL');
|
||||||
|
PRINT 'PARAMETER39 - @PROFILE_TYPE_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @PROFILE_TYPE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER40 - @PROFILE_MANDANTOR: ' + ISNULL(CONVERT(NVARCHAR(50), @PROFILE_MANDANTOR), 'NULL');
|
||||||
|
PRINT 'PARAMETER41 - @PROFILE_NAME: ' + ISNULL(CONVERT(NVARCHAR(50), @PROFILE_NAME), 'NULL');
|
||||||
|
PRINT 'PARAMETER42 - @PROFILE_DESCRIPTION: ' + ISNULL(CONVERT(NVARCHAR(250), @PROFILE_DESCRIPTION), 'NULL');
|
||||||
|
PRINT 'PARAMETER43 - @PROFILE_LOG_LEVEL_ID: ' + ISNULL(CONVERT(NVARCHAR(5), @PROFILE_LOG_LEVEL_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER44 - @PROFILE_LANGUAGE_ID: ' + ISNULL(CONVERT(NVARCHAR(10), @PROFILE_LANGUAGE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER45 - @PROFILE_FIRST_RUN: ' + ISNULL(CONVERT(NVARCHAR(50), @PROFILE_FIRST_RUN), 'NULL');
|
||||||
|
PRINT 'PARAMETER46 - @PROFILE_LAST_RUN: ' + ISNULL(CONVERT(NVARCHAR(50), @PROFILE_LAST_RUN), 'NULL');
|
||||||
|
PRINT 'PARAMETER47 - @PROFILE_LAST_RESULT: ' + ISNULL(CONVERT(NVARCHAR(250), @PROFILE_LAST_RESULT), 'NULL');
|
||||||
|
PRINT 'PARAMETER48 - @RESULT_ACTION_ID: ' + ISNULL(CONVERT(NVARCHAR(30), @RESULT_ACTION_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER49 - @RESULT_STATUS_ID: ' + ISNULL(CONVERT(NVARCHAR(10), @RESULT_STATUS_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER50 - @RESULT_TYPE_ID: ' + ISNULL(CONVERT(NVARCHAR(1), @RESULT_TYPE_ID), 'NULL');
|
||||||
|
PRINT 'PARAMETER51 - @RESULT_HEADER: ' + ISNULL(CONVERT(NVARCHAR(100), @RESULT_HEADER), 'NULL');
|
||||||
|
PRINT 'PARAMETER52 - @RESULT_BODY: ' + ISNULL(CONVERT(NVARCHAR(100), @RESULT_BODY), 'NULL');
|
||||||
|
PRINT 'PARAMETER53 - @RESULT_INFO: ' + ISNULL(CONVERT(NVARCHAR(100), @RESULT_INFO), 'NULL');
|
||||||
|
PRINT 'PARAMETER54 - @RESULT_ERROR: ' + ISNULL(CONVERT(NVARCHAR(100), @RESULT_ERROR), 'NULL');
|
||||||
|
PRINT '';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--================================================-- Validation --=======================================================--
|
||||||
|
IF (@ENTITY NOT IN ('ACTION', 'ENDPOINT', 'ENDPOINT_AUTH', 'ENDPOINT_PARAMS', 'PROFILE', 'RESULT')) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50201;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: Unknown entity "' + @ENTITY + '". Allowed: ACTION, ENDPOINT, ENDPOINT_AUTH, ENDPOINT_PARAMS, PROFILE, RESULT.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF (@GUID IS NULL) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50202;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: @pGUID is required.';
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END;
|
||||||
|
|
||||||
|
-- value validations from views
|
||||||
|
IF (@ENTITY = 'ACTION') BEGIN
|
||||||
|
IF (@ACTION_TYPE_ID IS NOT NULL AND @ACTION_TYPE_ID NOT IN (0,1,2,3,4,5,6,7,8,9)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50203;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ACTION.TYPE_ID must be one of (0..9).';
|
||||||
|
END; ELSE IF (@ACTION_ERROR_ACTION_ID IS NOT NULL AND @ACTION_ERROR_ACTION_ID NOT IN (0,1)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50204;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ACTION.ERROR_ACTION_ID must be 0 or 1.';
|
||||||
|
END;
|
||||||
|
END; ELSE IF (@ENTITY = 'ENDPOINT_AUTH') BEGIN
|
||||||
|
IF (@ENDPOINT_AUTH_TYPE_ID IS NOT NULL AND @ENDPOINT_AUTH_TYPE_ID NOT IN (0,1,2,3,4,5,6,7,8,9)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50205;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT_AUTH.TYPE_ID must be one of (0..9).';
|
||||||
|
END; ELSE IF (@ENDPOINT_AUTH_API_KEY_ADD_TO_ID IS NOT NULL AND @ENDPOINT_AUTH_API_KEY_ADD_TO_ID NOT IN (0,1)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50206;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT_AUTH.API_KEY_ADD_TO must be 0 (HEADER) or 1 (QUERY).';
|
||||||
|
END;
|
||||||
|
END; ELSE IF (@ENTITY = 'PROFILE') BEGIN
|
||||||
|
IF (@PROFILE_TYPE_ID IS NOT NULL AND @PROFILE_TYPE_ID NOT IN (1,2)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50207;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: PROFILE.TYPE_ID must be 1 or 2.';
|
||||||
|
END; ELSE IF (@PROFILE_LOG_LEVEL_ID IS NOT NULL AND @PROFILE_LOG_LEVEL_ID NOT IN (0,1,2,3,4,5,6)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50208;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: PROFILE.LOG_LEVEL_ID must be between 0 and 6.';
|
||||||
|
END; ELSE IF (@PROFILE_LANGUAGE_ID IS NOT NULL AND @PROFILE_LANGUAGE_ID NOT IN (1031,1033)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50209;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: PROFILE.LANGUAGE_ID must be 1031 or 1033.';
|
||||||
|
END;
|
||||||
|
END; ELSE IF (@ENTITY = 'RESULT') BEGIN
|
||||||
|
IF (@RESULT_STATUS_ID IS NOT NULL AND @RESULT_STATUS_ID NOT IN (100,101,103,200,201,202,204,206,301,302,304,307,308,400,401,403,404,405,408,429,451,500,501,502,503,504,511)) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50210;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: RESULT.STATUS_ID not in allowed HTTP status list.';
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF (@RETURN_STATUS > 0) BEGIN
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--===============================================-- Main Processing --===================================================--
|
||||||
|
BEGIN TRY
|
||||||
|
|
||||||
|
BEGIN TRANSACTION;
|
||||||
|
|
||||||
|
IF (@ENTITY = 'ACTION') BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_ACTION] WHERE [GUID] = @GUID) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50211;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ACTION with GUID=' + CONVERT(NVARCHAR(30), @GUID) + ' not found.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
UPDATE [CFG_ACTION] SET
|
||||||
|
[PROFILE_ID] = COALESCE(@ACTION_PROFILE_ID, [CFG_ACTION].[PROFILE_ID]),
|
||||||
|
[ACTIVE] = COALESCE(@ACTION_ACTIVE, [CFG_ACTION].[ACTIVE]),
|
||||||
|
[SEQUENCE] = COALESCE(@ACTION_SEQUENCE, [CFG_ACTION].[SEQUENCE]),
|
||||||
|
[ENDPOINT_ID] = COALESCE(@ACTION_ENDPOINT_ID, [CFG_ACTION].[ENDPOINT_ID]),
|
||||||
|
[ENDPOINT_AUTH_ID] = COALESCE(@ACTION_ENDPOINT_AUTH_ID, [CFG_ACTION].[ENDPOINT_AUTH_ID]),
|
||||||
|
[ENDPOINT_PARAMS_ID] = COALESCE(@ACTION_ENDPOINT_PARAMS_ID,[CFG_ACTION].[ENDPOINT_PARAMS_ID]),
|
||||||
|
[SQL_CONNECTION_ID] = COALESCE(@ACTION_SQL_CONNECTION_ID, [CFG_ACTION].[SQL_CONNECTION_ID]),
|
||||||
|
[TYPE_ID] = COALESCE(@ACTION_TYPE_ID, [CFG_ACTION].[TYPE_ID]),
|
||||||
|
[PREPROCESSING_QUERY] = COALESCE(@ACTION_PRE_SQL, [CFG_ACTION].[PREPROCESSING_QUERY]),
|
||||||
|
[HEADER_QUERY] = COALESCE(@ACTION_HEADER_SQL, [CFG_ACTION].[HEADER_QUERY]),
|
||||||
|
[BODY_QUERY] = COALESCE(@ACTION_BODY_SQL, [CFG_ACTION].[BODY_QUERY]),
|
||||||
|
[POSTPROCESSING_QUERY] = COALESCE(@ACTION_POST_SQL, [CFG_ACTION].[POSTPROCESSING_QUERY]),
|
||||||
|
[ERROR_ACTION_ID] = COALESCE(@ACTION_ERROR_ACTION_ID, [CFG_ACTION].[ERROR_ACTION_ID]),
|
||||||
|
[CHANGED_WHO] = COALESCE(@CHANGED_WHO, [CFG_ACTION].[CHANGED_WHO]),
|
||||||
|
[CHANGED_WHEN] = COALESCE(@CHANGED_WHEN, [CFG_ACTION].[CHANGED_WHEN])
|
||||||
|
FROM [dbo].[TBREC_CFG_ACTION] as [CFG_ACTION]
|
||||||
|
WHERE [CFG_ACTION].[GUID] = @GUID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Updated ACTION GUID=' + CONVERT(NVARCHAR(30), @GUID);
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'ENDPOINT') BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_ENDPOINT] WHERE [GUID] = @GUID) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50212;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT with GUID=' + CONVERT(NVARCHAR(30), @GUID) + ' not found.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
UPDATE [CFG_ENDPOINT] SET
|
||||||
|
[ACTIVE] = COALESCE(@ENDPOINT_ACTIVE, [CFG_ENDPOINT].[ACTIVE]),
|
||||||
|
[DESCRIPTION] = COALESCE(@ENDPOINT_DESCRIPTION, [CFG_ENDPOINT].[DESCRIPTION]),
|
||||||
|
[URI] = COALESCE(@ENDPOINT_URI, [CFG_ENDPOINT].[URI]),
|
||||||
|
[CHANGED_WHO] = COALESCE(@CHANGED_WHO, [CFG_ENDPOINT].[CHANGED_WHO]),
|
||||||
|
[CHANGED_WHEN] = COALESCE(@CHANGED_WHEN, [CFG_ENDPOINT].[CHANGED_WHEN])
|
||||||
|
FROM [dbo].[TBREC_CFG_ENDPOINT] as [CFG_ENDPOINT]
|
||||||
|
WHERE [CFG_ENDPOINT].[GUID] = @GUID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Updated ENDPOINT GUID=' + CONVERT(NVARCHAR(30), @GUID);
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'ENDPOINT_AUTH') BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_ENDPOINT_AUTH] WHERE [GUID] = @GUID) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50213;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT_AUTH with GUID=' + CONVERT(NVARCHAR(30), @GUID) + ' not found.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
UPDATE [CFG_ENDPOINT_AUTH] SET
|
||||||
|
[ACTIVE] = COALESCE(@ENDPOINT_AUTH_ACTIVE, [CFG_ENDPOINT_AUTH].[ACTIVE]),
|
||||||
|
[DESCRIPTION] = COALESCE(@ENDPOINT_AUTH_DESCRIPTION, [CFG_ENDPOINT_AUTH].[DESCRIPTION]),
|
||||||
|
[TYPE_ID] = COALESCE(@ENDPOINT_AUTH_TYPE_ID, [CFG_ENDPOINT_AUTH].[TYPE_ID]),
|
||||||
|
[API_KEY] = COALESCE(@ENDPOINT_AUTH_API_KEY, [CFG_ENDPOINT_AUTH].[API_KEY]),
|
||||||
|
[API_VALUE] = COALESCE(@ENDPOINT_AUTH_API_VALUE, [CFG_ENDPOINT_AUTH].[API_VALUE]),
|
||||||
|
[API_KEY_ADD_TO_ID] = COALESCE(@ENDPOINT_AUTH_API_KEY_ADD_TO_ID,[CFG_ENDPOINT_AUTH].[API_KEY_ADD_TO_ID]),
|
||||||
|
[TOKEN] = COALESCE(@ENDPOINT_AUTH_TOKEN, [CFG_ENDPOINT_AUTH].[TOKEN]),
|
||||||
|
[USERNAME] = COALESCE(@ENDPOINT_AUTH_USERNAME, [CFG_ENDPOINT_AUTH].[USERNAME]),
|
||||||
|
[PASSWORD] = COALESCE(@ENDPOINT_AUTH_PASSWORD, [CFG_ENDPOINT_AUTH].[PASSWORD]),
|
||||||
|
[DOMAIN] = COALESCE(@ENDPOINT_AUTH_DOMAIN, [CFG_ENDPOINT_AUTH].[DOMAIN]),
|
||||||
|
[WORKSTATION] = COALESCE(@ENDPOINT_AUTH_WORKSTATION, [CFG_ENDPOINT_AUTH].[WORKSTATION]),
|
||||||
|
[CHANGED_WHO] = COALESCE(@CHANGED_WHO, [CFG_ENDPOINT_AUTH].[CHANGED_WHO]),
|
||||||
|
[CHANGED_WHEN] = COALESCE(@CHANGED_WHEN, [CFG_ENDPOINT_AUTH].[CHANGED_WHEN])
|
||||||
|
FROM [dbo].[TBREC_CFG_ENDPOINT_AUTH] as [CFG_ENDPOINT_AUTH]
|
||||||
|
WHERE [CFG_ENDPOINT_AUTH].[GUID] = @GUID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Updated ENDPOINT_AUTH GUID=' + CONVERT(NVARCHAR(30), @GUID);
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'PROFILE') BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_PROFILE] WHERE [GUID] = @GUID) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50214;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: PROFILE with GUID=' + CONVERT(NVARCHAR(30), @GUID) + ' not found.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
UPDATE [CFG_PROFILE] SET
|
||||||
|
[ACTIVE] = COALESCE(@PROFILE_ACTIVE, [CFG_PROFILE].[ACTIVE]),
|
||||||
|
[TYPE_ID] = COALESCE(@PROFILE_TYPE_ID, [CFG_PROFILE].[TYPE_ID]),
|
||||||
|
[MANDANTOR] = COALESCE(@PROFILE_MANDANTOR, [CFG_PROFILE].[MANDANTOR]),
|
||||||
|
[PROFILE_NAME] = COALESCE(@PROFILE_NAME, [CFG_PROFILE].[PROFILE_NAME]),
|
||||||
|
[DESCRIPTION] = COALESCE(@PROFILE_DESCRIPTION, [CFG_PROFILE].[DESCRIPTION]),
|
||||||
|
[LOG_LEVEL_ID] = COALESCE(@PROFILE_LOG_LEVEL_ID, [CFG_PROFILE].[LOG_LEVEL_ID]),
|
||||||
|
[LANGUAGE_ID] = COALESCE(@PROFILE_LANGUAGE_ID, [CFG_PROFILE].[LANGUAGE_ID]),
|
||||||
|
[CHANGED_WHO] = COALESCE(@CHANGED_WHO, [CFG_PROFILE].[CHANGED_WHO]),
|
||||||
|
[CHANGED_WHEN] = COALESCE(@CHANGED_WHEN, [CFG_PROFILE].[CHANGED_WHEN])
|
||||||
|
FROM [dbo].[TBREC_CFG_PROFILE] as [CFG_PROFILE]
|
||||||
|
WHERE [CFG_PROFILE].[GUID] = @GUID;
|
||||||
|
|
||||||
|
IF EXISTS (SELECT 1 FROM [dbo].[TBREC_RUN_PROFILE] WHERE [PROFILE_ID] = @GUID) BEGIN
|
||||||
|
UPDATE [RUN_PROFILE] SET
|
||||||
|
[FIRST_RUN] = COALESCE(@PROFILE_FIRST_RUN, [RUN_PROFILE].[FIRST_RUN]),
|
||||||
|
[LAST_RUN] = COALESCE(@PROFILE_LAST_RUN, [RUN_PROFILE].[LAST_RUN]),
|
||||||
|
[LAST_RESULT] = COALESCE(@PROFILE_LAST_RESULT, [RUN_PROFILE].[LAST_RESULT])
|
||||||
|
FROM [dbo].[TBREC_RUN_PROFILE] as [RUN_PROFILE]
|
||||||
|
WHERE [RUN_PROFILE].[PROFILE_ID] = @GUID;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
INSERT INTO [dbo].[TBREC_RUN_PROFILE] ([PROFILE_ID],[FIRST_RUN],[LAST_RUN],[LAST_RESULT])
|
||||||
|
VALUES (@GUID, @PROFILE_FIRST_RUN, @PROFILE_LAST_RUN, @PROFILE_LAST_RESULT);
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Updated PROFILE and RUN_PROFILE for GUID=' + CONVERT(NVARCHAR(30), @GUID);
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'ENDPOINT_PARAMS') BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[TBREC_CFG_ENDPOINT_PARAMS] WHERE [GUID] = @GUID) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50215;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ENDPOINT_PARAMS with GUID=' + CONVERT(NVARCHAR(30), @GUID) + ' not found.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
UPDATE [CFG_ENDPOINT_PARAMS] SET
|
||||||
|
[ACTIVE] = COALESCE(@ENDPOINT_PARAMS_ACTIVE, [CFG_ENDPOINT_PARAMS].[ACTIVE]),
|
||||||
|
[DESCRIPTION] = COALESCE(@ENDPOINT_PARAMS_DESCRIPTION, [CFG_ENDPOINT_PARAMS].[DESCRIPTION]),
|
||||||
|
[GROUP_ID] = COALESCE(@ENDPOINT_PARAMS_GROUP_ID, [CFG_ENDPOINT_PARAMS].[GROUP_ID]),
|
||||||
|
[SEQUENCE] = COALESCE(@ENDPOINT_PARAMS_SEQUENCE, [CFG_ENDPOINT_PARAMS].[SEQUENCE]),
|
||||||
|
[KEY] = COALESCE(@ENDPOINT_PARAMS_KEY, [CFG_ENDPOINT_PARAMS].[KEY]),
|
||||||
|
[VALUE] = COALESCE(@ENDPOINT_PARAMS_VALUE, [CFG_ENDPOINT_PARAMS].[VALUE]),
|
||||||
|
[CHANGED_WHO] = COALESCE(@CHANGED_WHO, [CFG_ENDPOINT_PARAMS].[CHANGED_WHO]),
|
||||||
|
[CHANGED_WHEN] = COALESCE(@CHANGED_WHEN, [CFG_ENDPOINT_PARAMS].[CHANGED_WHEN])
|
||||||
|
FROM [dbo].[TBREC_CFG_ENDPOINT_PARAMS] as [CFG_ENDPOINT_PARAMS]
|
||||||
|
WHERE [CFG_ENDPOINT_PARAMS].[GUID] = @GUID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Updated ENDPOINT_PARAMS GUID=' + CONVERT(NVARCHAR(30), @GUID);
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE IF (@ENTITY = 'RESULT') BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [dbo].[TBREC_OUT_RESULT] WHERE [GUID] = @GUID) BEGIN
|
||||||
|
SET @RETURN_STATUS = 50216;
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: RESULT with GUID=' + CONVERT(NVARCHAR(30), @GUID) + ' not found.';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
UPDATE [OUT_RESULT] SET
|
||||||
|
[ACTION_ID] = COALESCE(@RESULT_ACTION_ID, [OUT_RESULT].[ACTION_ID]),
|
||||||
|
[STATUS_ID] = COALESCE(@RESULT_STATUS_ID, [OUT_RESULT].[STATUS_ID]),
|
||||||
|
[RESULT_TYPE_ID] = COALESCE(@RESULT_STATUS_ID, [OUT_RESULT].[RESULT_TYPE_ID]),
|
||||||
|
[RESULT_HEADER] = COALESCE(@RESULT_HEADER, [OUT_RESULT].[RESULT_HEADER]),
|
||||||
|
[RESULT_BODY] = COALESCE(@RESULT_BODY, [OUT_RESULT].[RESULT_BODY]),
|
||||||
|
[RESULT_INFO] = COALESCE(@RESULT_INFO, [OUT_RESULT].[RESULT_INFO]),
|
||||||
|
[RESULT_ERROR] = COALESCE(@RESULT_ERROR, [OUT_RESULT].[RESULT_ERROR]),
|
||||||
|
[CHANGED_WHO] = COALESCE(@CHANGED_WHO, [OUT_RESULT].[CHANGED_WHO]),
|
||||||
|
[CHANGED_WHEN] = COALESCE(@CHANGED_WHEN, [OUT_RESULT].[CHANGED_WHEN])
|
||||||
|
FROM [dbo].[TBREC_OUT_RESULT] as [OUT_RESULT]
|
||||||
|
WHERE [OUT_RESULT].[GUID] = @GUID;
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'INFO: Updated RESULT GUID=' + CONVERT(NVARCHAR(30), @GUID);
|
||||||
|
END;
|
||||||
|
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF (@RETURN_STATUS > 0) BEGIN
|
||||||
|
IF (XACT_STATE() <> 0) ROLLBACK TRANSACTION;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
COMMIT TRANSACTION;
|
||||||
|
END;
|
||||||
|
|
||||||
|
--======================================================-- Output result --======================================================--
|
||||||
|
SET @RETURN_STATUS_TEXT = 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
|
||||||
|
PRINT '';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
|
||||||
|
END TRY BEGIN CATCH
|
||||||
|
|
||||||
|
IF (XACT_STATE() <> 0) ROLLBACK TRANSACTION;
|
||||||
|
|
||||||
|
--======================================================-- Output result --======================================================--
|
||||||
|
SET @RETURN_STATUS_TEXT = 'ERROR: ' + ERROR_MESSAGE();
|
||||||
|
RAISERROR(@RETURN_STATUS_TEXT,16,1);
|
||||||
|
|
||||||
|
SET @RETURN_STATUS_TEXT = 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(VARCHAR(50), GETDATE(), 120);
|
||||||
|
|
||||||
|
PRINT '';
|
||||||
|
PRINT @RETURN_STATUS_TEXT;
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
RETURN @RETURN_STATUS;
|
||||||
|
|
||||||
|
END CATCH;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
END;
|
||||||
|
GO
|
||||||
137
current/[DD_ECM]-Database/ReC/[TBREC_CFG_ACTION].sql
Normal file
137
current/[DD_ECM]-Database/ReC/[TBREC_CFG_ACTION].sql
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBREC_CFG_ACTION](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[PROFILE_ID] [bigint] NOT NULL,
|
||||||
|
[ACTIVE] [bit] NOT NULL,
|
||||||
|
[SEQUENCE] [tinyint] NOT NULL,
|
||||||
|
[ENDPOINT_ID] [bigint] NOT NULL,
|
||||||
|
[ENDPOINT_AUTH_ID] [bigint] NULL,
|
||||||
|
[ENDPOINT_PARAMS_ID] [smallint] NULL,
|
||||||
|
[SQL_CONNECTION_ID] [smallint] NULL,
|
||||||
|
[TYPE_ID] [tinyint] NOT NULL,
|
||||||
|
[PREPROCESSING_QUERY] [nvarchar](max) NULL,
|
||||||
|
[HEADER_QUERY] [nvarchar](max) NULL,
|
||||||
|
[BODY_QUERY] [nvarchar](max) NULL,
|
||||||
|
[POSTPROCESSING_QUERY] [nvarchar](max) NULL,
|
||||||
|
[ERROR_ACTION_ID] [tinyint] NOT NULL,
|
||||||
|
[ADDED_WHO] [nvarchar](50) NOT NULL,
|
||||||
|
[ADDED_WHEN] [datetime] NOT NULL,
|
||||||
|
[CHANGED_WHO] [nvarchar](50) NULL,
|
||||||
|
[CHANGED_WHEN] [datetime] NULL,
|
||||||
|
CONSTRAINT [PK_TBREC_CFG_ACTION_GUID] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] ADD CONSTRAINT [DF_TBREC_CFG_ACTION_ACTIVE] DEFAULT ((0)) FOR [ACTIVE]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] ADD CONSTRAINT [DF_TBREC_CFG_ACTION_SEQUENCE] DEFAULT ((0)) FOR [SEQUENCE]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] ADD CONSTRAINT [DF_TBREC_CFG_ACTION_TYPE_ID] DEFAULT ((1)) FOR [TYPE_ID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] ADD CONSTRAINT [DF_TBREC_CFG_ACTION_ERROR_ACTION_ID] DEFAULT ((0)) FOR [ERROR_ACTION_ID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] ADD CONSTRAINT [DF_TBREC_CFG_ACTION_ADDED_WHO] DEFAULT (suser_sname()) FOR [ADDED_WHO]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] ADD CONSTRAINT [DF_TBREC_CFG_ACTION_ADDED_WHEN] DEFAULT (sysdatetime()) FOR [ADDED_WHEN]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] WITH CHECK ADD CONSTRAINT [FK_TBREC_CFG_ACTION_TBDD_CONNECTION] FOREIGN KEY([SQL_CONNECTION_ID])
|
||||||
|
REFERENCES [dbo].[TBDD_CONNECTION] ([GUID])
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] CHECK CONSTRAINT [FK_TBREC_CFG_ACTION_TBDD_CONNECTION]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] WITH CHECK ADD CONSTRAINT [FK_TBREC_CFG_ACTION_TBREC_CFG_ENDPOINT] FOREIGN KEY([ENDPOINT_ID])
|
||||||
|
REFERENCES [dbo].[TBREC_CFG_ENDPOINT] ([GUID])
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] CHECK CONSTRAINT [FK_TBREC_CFG_ACTION_TBREC_CFG_ENDPOINT]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] WITH CHECK ADD CONSTRAINT [FK_TBREC_CFG_ACTION_TBREC_CFG_ENDPOINT_AUTH] FOREIGN KEY([ENDPOINT_AUTH_ID])
|
||||||
|
REFERENCES [dbo].[TBREC_CFG_ENDPOINT_AUTH] ([GUID])
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] CHECK CONSTRAINT [FK_TBREC_CFG_ACTION_TBREC_CFG_ENDPOINT_AUTH]
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primärschlüssel' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'GUID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Profil-Referenz' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'PROFILE_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ein-/Ausschalter' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'ACTIVE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Reihenfolge im Profil' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'SEQUENCE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Endpoint-Referenz' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'ENDPOINT_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Auth-Referenz' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'ENDPOINT_AUTH_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Parameterguppe' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'ENDPOINT_PARAMS_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'SQL-Verbindungs-Referenz' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'SQL_CONNECTION_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'HTTP-Methode (0 = NONE; 1 = GET; 2 = POST; 3 = PUT; 4 = PATCH; 5 = DELETE; 6 = HEAD; 7 = OPTIONS; 8 = CONNECT; 9 = TRACE)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'TYPE_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'SQL vor Request' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'PREPROCESSING_QUERY'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'SQL fuer Header-Erzeugung' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'HEADER_QUERY'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'SQL fuer Body-Erzeugung' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'BODY_QUERY'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'SQL nach Request' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'POSTPROCESSING_QUERY'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Fehlerbehandlung (0 = STOP; 1 = CONTINUE)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'ERROR_ACTION_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'ADDED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'ADDED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'CHANGED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ACTION', @level2type=N'COLUMN',@level2name=N'CHANGED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[TBREC_CFG_ACTION_AFT_UPD] ON [dbo].[TBREC_CFG_ACTION]
|
||||||
|
FOR UPDATE
|
||||||
|
AS
|
||||||
|
UPDATE [TBREC_CFG_ACTION]
|
||||||
|
SET [CHANGED_WHEN] = (SYSDATETIME())
|
||||||
|
FROM [INSERTED]
|
||||||
|
WHERE [TBREC_CFG_ACTION].[GUID] = [INSERTED].[GUID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ACTION] ENABLE TRIGGER [TBREC_CFG_ACTION_AFT_UPD]
|
||||||
|
GO
|
||||||
64
current/[DD_ECM]-Database/ReC/[TBREC_CFG_ENDPOINT].sql
Normal file
64
current/[DD_ECM]-Database/ReC/[TBREC_CFG_ENDPOINT].sql
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBREC_CFG_ENDPOINT](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[ACTIVE] [bit] NOT NULL,
|
||||||
|
[DESCRIPTION] [nvarchar](250) NULL,
|
||||||
|
[URI] [nvarchar](2000) NOT NULL,
|
||||||
|
[ADDED_WHO] [nvarchar](50) NOT NULL,
|
||||||
|
[ADDED_WHEN] [datetime] NOT NULL,
|
||||||
|
[CHANGED_WHO] [nvarchar](50) NULL,
|
||||||
|
[CHANGED_WHEN] [datetime] NULL,
|
||||||
|
CONSTRAINT [PK_TBREC_CFG_ENDPOINT] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_ADDED_WHO] DEFAULT (SUSER_SNAME()) FOR [ADDED_WHO]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_ADDED_WHEN] DEFAULT (sysdatetime()) FOR [ADDED_WHEN]
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primärschlüssel' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT', @level2type=N'COLUMN',@level2name=N'GUID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ein-/Ausschalter' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT', @level2type=N'COLUMN',@level2name=N'ACTIVE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Beschreibung' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT', @level2type=N'COLUMN',@level2name=N'DESCRIPTION'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ziel-URI' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT', @level2type=N'COLUMN',@level2name=N'URI'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT', @level2type=N'COLUMN',@level2name=N'ADDED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT', @level2type=N'COLUMN',@level2name=N'ADDED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT', @level2type=N'COLUMN',@level2name=N'CHANGED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT', @level2type=N'COLUMN',@level2name=N'CHANGED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[TBREC_CFG_ENDPOINT_AFT_UPD] ON [dbo].[TBREC_CFG_ENDPOINT]
|
||||||
|
FOR UPDATE
|
||||||
|
AS
|
||||||
|
UPDATE [TBREC_CFG_ENDPOINT]
|
||||||
|
SET [CHANGED_WHEN] = (SYSDATETIME())
|
||||||
|
FROM [INSERTED]
|
||||||
|
WHERE [TBREC_CFG_ENDPOINT].[GUID] = [INSERTED].[GUID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT] ENABLE TRIGGER [TBREC_CFG_ENDPOINT_AFT_UPD]
|
||||||
|
GO
|
||||||
102
current/[DD_ECM]-Database/ReC/[TBREC_CFG_ENDPOINT_AUTH].sql
Normal file
102
current/[DD_ECM]-Database/ReC/[TBREC_CFG_ENDPOINT_AUTH].sql
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBREC_CFG_ENDPOINT_AUTH](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[ACTIVE] [bit] NOT NULL,
|
||||||
|
[DESCRIPTION] [nvarchar](250) NULL,
|
||||||
|
[TYPE_ID] [tinyint] NOT NULL,
|
||||||
|
[API_KEY] [nvarchar](150) NULL,
|
||||||
|
[API_VALUE] [nvarchar](150) NULL,
|
||||||
|
[API_KEY_ADD_TO_ID] [bit] NULL,
|
||||||
|
[TOKEN] [nvarchar](150) NULL,
|
||||||
|
[USERNAME] [nvarchar](100) NULL,
|
||||||
|
[PASSWORD] [nvarchar](100) NULL,
|
||||||
|
[DOMAIN] [nvarchar](50) NULL,
|
||||||
|
[WORKSTATION] [nvarchar](50) NULL,
|
||||||
|
[ADDED_WHO] [nvarchar](50) NOT NULL,
|
||||||
|
[ADDED_WHEN] [datetime] NOT NULL,
|
||||||
|
[CHANGED_WHO] [nvarchar](50) NULL,
|
||||||
|
[CHANGED_WHEN] [datetime] NULL,
|
||||||
|
CONSTRAINT [PK_TBREC_CFG_ENDPOINT_AUTH_GUID] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_AUTH] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_AUTH_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_AUTH] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_AUTH_TYPE_ID] DEFAULT ((0)) FOR [TYPE_ID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_AUTH] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_AUTH_ADDED_WHO] DEFAULT (suser_sname()) FOR [ADDED_WHO]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_AUTH] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_AUTH_ADDED_WHEN] DEFAULT (sysdatetime()) FOR [ADDED_WHEN]
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primärschlüssel' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'GUID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ein-/Ausschalter' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'ACTIVE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Beschreibung' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'DESCRIPTION'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Auth-Typ ("0 = No Auth", "1 = API Key", "2 = Bearer Token", "3 = JWT Bearer", "4 = Basic Auth", "5 = Digest Auth", "6 = OAuth 1.0", "7 = OAuth 2.0", "8 = AWS Signature", "9 = NTLM Auth")' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'TYPE_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'API-Key-Name/-Header' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'API_KEY'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'API-Key-Wert' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'API_VALUE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Platzierung (0 = HEADER; 1 = QUERY)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'API_KEY_ADD_TO_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Bearer/JWT-Token' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'TOKEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Username Basic/Digest/NTLM' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'USERNAME'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Passwort Basic/Digest/NTLM' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'PASSWORD'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Domain fuer NTLM' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'DOMAIN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Workstation fuer NTLM' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'WORKSTATION'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'ADDED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'ADDED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'CHANGED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_AUTH', @level2type=N'COLUMN',@level2name=N'CHANGED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[TBREC_CFG_ENDPOINT_AUTH_AFT_UPD] ON [dbo].[TBREC_CFG_ENDPOINT_AUTH]
|
||||||
|
FOR UPDATE
|
||||||
|
AS
|
||||||
|
UPDATE [TBREC_CFG_ENDPOINT_AUTH]
|
||||||
|
SET [CHANGED_WHEN] = (SYSDATETIME())
|
||||||
|
FROM [INSERTED]
|
||||||
|
WHERE [TBREC_CFG_ENDPOINT_AUTH].[GUID] = [INSERTED].[GUID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_AUTH] ENABLE TRIGGER [TBREC_CFG_ENDPOINT_AUTH_AFT_UPD]
|
||||||
|
GO
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBREC_CFG_ENDPOINT_PARAMS](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[ACTIVE] [bit] NOT NULL,
|
||||||
|
[DESCRIPTION] [nvarchar](250) NULL,
|
||||||
|
[GROUP_ID] [smallint] NOT NULL,
|
||||||
|
[SEQUENCE] [tinyint] NULL,
|
||||||
|
[KEY] [nvarchar](150) NULL,
|
||||||
|
[VALUE] [nvarchar](150) NULL,
|
||||||
|
[ADDED_WHO] [nvarchar](50) NOT NULL,
|
||||||
|
[ADDED_WHEN] [datetime] NOT NULL,
|
||||||
|
[CHANGED_WHO] [nvarchar](50) NULL,
|
||||||
|
[CHANGED_WHEN] [datetime] NULL,
|
||||||
|
CONSTRAINT [PK_TBREC_CFG_ENDPOINT_PARAMS_GUID] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_PARAMS] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_PARAMS_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_PARAMS] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_PARAMS_ADDED_WHO] DEFAULT (suser_sname()) FOR [ADDED_WHO]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_PARAMS] ADD CONSTRAINT [DF_TBREC_CFG_ENDPOINT_PARAMS_ADDED_WHEN] DEFAULT (sysdatetime()) FOR [ADDED_WHEN]
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primärschlüssel' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'GUID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ein-/Ausschalter' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'ACTIVE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Beschreibung' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'DESCRIPTION'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Parameterguppe' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'GROUP_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Reihenfolge' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'SEQUENCE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Parameter-Name' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'KEY'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Parameter-Wert' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'VALUE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'ADDED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'ADDED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'CHANGED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_ENDPOINT_PARAMS', @level2type=N'COLUMN',@level2name=N'CHANGED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[TBREC_CFG_ENDPOINT_PARAMS_AFT_UPD] ON [dbo].[TBREC_CFG_ENDPOINT_PARAMS]
|
||||||
|
FOR UPDATE
|
||||||
|
AS
|
||||||
|
UPDATE [TBREC_CFG_ENDPOINT_PARAMS]
|
||||||
|
SET [CHANGED_WHEN] = (SYSDATETIME())
|
||||||
|
FROM [INSERTED]
|
||||||
|
WHERE [TBREC_CFG_ENDPOINT_PARAMS].[GUID] = [INSERTED].[GUID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_ENDPOINT_PARAMS] ENABLE TRIGGER [TBREC_CFG_ENDPOINT_PARAMS_AFT_UPD]
|
||||||
|
GO
|
||||||
96
current/[DD_ECM]-Database/ReC/[TBREC_CFG_PROFILE].sql
Normal file
96
current/[DD_ECM]-Database/ReC/[TBREC_CFG_PROFILE].sql
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBREC_CFG_PROFILE](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[ACTIVE] [bit] NOT NULL,
|
||||||
|
[TYPE_ID] [tinyint] NOT NULL,
|
||||||
|
[MANDANTOR] [nvarchar](50) NOT NULL,
|
||||||
|
[PROFILE_NAME] [nvarchar](50) NOT NULL,
|
||||||
|
[DESCRIPTION] [nvarchar](250) NULL,
|
||||||
|
[LOG_LEVEL_ID] [tinyint] NOT NULL,
|
||||||
|
[LANGUAGE_ID] [smallint] NOT NULL,
|
||||||
|
[ADDED_WHO] [nvarchar](50) NOT NULL,
|
||||||
|
[ADDED_WHEN] [datetime] NOT NULL,
|
||||||
|
[CHANGED_WHO] [nvarchar](50) NULL,
|
||||||
|
[CHANGED_WHEN] [datetime] NULL,
|
||||||
|
CONSTRAINT [PK_TBREC_CFG_PROFILE_GUID] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_PROFILE] ADD CONSTRAINT [DF_TBREC_CFG_PROFILE_ACTIVE] DEFAULT ((0)) FOR [ACTIVE]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_PROFILE] ADD CONSTRAINT [DF_TBREC_CFG_PROFILE_TYPE_ID] DEFAULT ((1)) FOR [TYPE_ID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_PROFILE] ADD CONSTRAINT [DF_TBREC_CFG_PROFILE_MANDANTOR] DEFAULT ('DEFAULT') FOR [MANDANTOR]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_PROFILE] ADD CONSTRAINT [DF_TBREC_CFG_PROFILE_LOG_LEVEL_ID] DEFAULT ((4)) FOR [LOG_LEVEL_ID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_PROFILE] ADD CONSTRAINT [DF_TBREC_CFG_PROFILE_LANGUAGE_ID] DEFAULT ((1031)) FOR [LANGUAGE_ID]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_PROFILE] ADD CONSTRAINT [DF_TBREC_CFG_PROFILE_ADDED_WHO] DEFAULT (suser_sname()) FOR [ADDED_WHO]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_PROFILE] ADD CONSTRAINT [DF_TBREC_CFG_PROFILE_ADDED_WHEN] DEFAULT (sysdatetime()) FOR [ADDED_WHEN]
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primärschlüssel' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'GUID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ein-/Ausschalter' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'ACTIVE'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Profiltyp (1 = HTTP; 2 = HTTPS)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'TYPE_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Mandant/Kunde' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'MANDANTOR'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Profilname' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'PROFILE_NAME'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Beschreibung' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'DESCRIPTION'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Protokollstufe (0 = TRACE , 1 = DEBUG, 2 = INFO, 3 = WARN, 4 = ERROR, 5 = CRITICAL und 6 = NONE)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'LOG_LEVEL_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Sprache nach LCID (Dec) Standard' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'LANGUAGE_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'ADDED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'ADDED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'CHANGED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_CFG_PROFILE', @level2type=N'COLUMN',@level2name=N'CHANGED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[TBREC_CFG_PROFILE_AFT_UPD] ON [dbo].[TBREC_CFG_PROFILE]
|
||||||
|
FOR UPDATE
|
||||||
|
AS
|
||||||
|
|
||||||
|
UPDATE [TBREC_CFG_PROFILE]
|
||||||
|
SET [CHANGED_WHEN] = (SYSDATETIME())
|
||||||
|
FROM [INSERTED]
|
||||||
|
WHERE [TBREC_CFG_PROFILE].[GUID] = [INSERTED].[GUID];
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_CFG_PROFILE] ENABLE TRIGGER [TBREC_CFG_PROFILE_AFT_UPD]
|
||||||
|
GO
|
||||||
66
current/[DD_ECM]-Database/ReC/[TBREC_OUT_RESULT].sql
Normal file
66
current/[DD_ECM]-Database/ReC/[TBREC_OUT_RESULT].sql
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBREC_OUT_RESULT](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[ACTION_ID] [bigint] NOT NULL,
|
||||||
|
[STATUS_ID] [smallint] NOT NULL,
|
||||||
|
[RESULT_TYPE_ID] [tinyint] NOT NULL,
|
||||||
|
[RESULT_HEADER] [nvarchar](max) NULL,
|
||||||
|
[RESULT_BODY] [nvarchar](max) NULL,
|
||||||
|
[RESULT_INFO] [nvarchar](max) NULL,
|
||||||
|
[RESULT_ERROR] [nvarchar](max) NULL,
|
||||||
|
[ADDED_WHO] [nvarchar](50) NOT NULL,
|
||||||
|
[ADDED_WHEN] [datetime] NOT NULL,
|
||||||
|
[CHANGED_WHO] [nvarchar](50) NULL,
|
||||||
|
[CHANGED_WHEN] [datetime] NULL,
|
||||||
|
CONSTRAINT [PK_TBREC_OUT_RESULT_GUID] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_OUT_RESULT] ADD CONSTRAINT [DF_TBREC_OUT_RESULT_ADDED_WHO] DEFAULT (suser_sname()) FOR [ADDED_WHO]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBREC_OUT_RESULT] ADD CONSTRAINT [DF_TBREC_OUT_RESULT_ADDED_WHEN] DEFAULT (sysdatetime()) FOR [ADDED_WHEN]
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primärschlüssel' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'GUID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Action-Referenz' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'ACTION_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Antwort-Code' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'STATUS_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Antwort von Schritt 1=Pre; 2=Main; 3=Post' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'RESULT_TYPE_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Antwort-Header' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'RESULT_HEADER'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Antwort-Body' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'RESULT_BODY'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Optionaler Antwort Infotext' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'RESULT_INFO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Optionaler Antwort Fehlertext' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'RESULT_ERROR'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'ADDED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Angelegt am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'ADDED_WHEN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert von' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'CHANGED_WHO'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Geaendert am' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_OUT_RESULT', @level2type=N'COLUMN',@level2name=N'CHANGED_WHEN'
|
||||||
|
GO
|
||||||
32
current/[DD_ECM]-Database/ReC/[TBREC_RUN_PROFILE].sql
Normal file
32
current/[DD_ECM]-Database/ReC/[TBREC_RUN_PROFILE].sql
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBREC_RUN_PROFILE](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[PROFILE_ID] [bigint] NOT NULL,
|
||||||
|
[FIRST_RUN] [datetime] NULL,
|
||||||
|
[LAST_RUN] [datetime] NULL,
|
||||||
|
[LAST_RESULT] [nvarchar](250) NULL,
|
||||||
|
CONSTRAINT [PK_TBREC_RUN_PROFILE_GUID] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primärschlüssel' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_RUN_PROFILE', @level2type=N'COLUMN',@level2name=N'GUID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Profil-Referenz' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_RUN_PROFILE', @level2type=N'COLUMN',@level2name=N'PROFILE_ID'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Erste Ausfuehrung' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_RUN_PROFILE', @level2type=N'COLUMN',@level2name=N'FIRST_RUN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Letzte Ausfuehrung' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_RUN_PROFILE', @level2type=N'COLUMN',@level2name=N'LAST_RUN'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Letztes Ergebnis' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBREC_RUN_PROFILE', @level2type=N'COLUMN',@level2name=N'LAST_RESULT'
|
||||||
|
GO
|
||||||
131
current/[DD_ECM]-Database/ReC/[VWREC_ACTION].sql
Normal file
131
current/[DD_ECM]-Database/ReC/[VWREC_ACTION].sql
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER VIEW [dbo].[VWREC_ACTION]
|
||||||
|
AS
|
||||||
|
SELECT TOP (100) PERCENT
|
||||||
|
[CFG_ACTION].[GUID] as 'ACTION_GUID',
|
||||||
|
[CFG_ACTION].[PROFILE_ID] as 'PROFILE_ID',
|
||||||
|
[CFG_PROFILE].[PROFILE_NAME] as 'PROFILE_NAME',
|
||||||
|
[CFG_PROFILE].[TYPE_ID] as 'PROFILE_TYPE_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_PROFILE].[TYPE_ID] = 1 THEN 'HTTP'
|
||||||
|
WHEN [CFG_PROFILE].[TYPE_ID] = 2 THEN 'HTTPS'
|
||||||
|
ELSE 'INVALID'
|
||||||
|
END as 'PROFILE_TYPE',
|
||||||
|
[CFG_ACTION].[SEQUENCE] as 'SEQUENCE',
|
||||||
|
[CFG_ACTION].[ENDPOINT_ID] as 'ENDPOINT_ID',
|
||||||
|
[CFG_ENDPOINT].[URI] as 'ENDPOINT_URI',
|
||||||
|
[CFG_ACTION].[ENDPOINT_AUTH_ID] as 'ENDPOINT_AUTH_ID',
|
||||||
|
[CFG_ENDPOINT_AUTH].[TYPE_ID] as 'ENDPOINT_AUTH_TYPE_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 0 THEN 'No Auth'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 1 THEN 'API Key'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 2 THEN 'Bearer Token'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 3 THEN 'JWT Bearer'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 4 THEN 'Basic Auth'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 5 THEN 'Digest Auth'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 6 THEN 'OAuth 1.0'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 7 THEN 'OAuth 2.0'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 8 THEN 'AWS Signature'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[TYPE_ID] = 9 THEN 'NTLM Auth'
|
||||||
|
ELSE 'INVALID'
|
||||||
|
END as 'ENDPOINT_AUTH_TYPE',
|
||||||
|
[CFG_ENDPOINT_AUTH].[API_KEY] as 'ENDPOINT_AUTH_API_KEY',
|
||||||
|
[CFG_ENDPOINT_AUTH].[API_VALUE] as 'ENDPOINT_AUTH_API_VALUE',
|
||||||
|
[CFG_ENDPOINT_AUTH].[API_KEY_ADD_TO_ID] as 'ENDPOINT_AUTH_API_KEY_ADD_TO_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[API_KEY_ADD_TO_ID] = 0 THEN 'HEADER'
|
||||||
|
WHEN [CFG_ENDPOINT_AUTH].[API_KEY_ADD_TO_ID] = 1 THEN 'QUERY'
|
||||||
|
ELSE NULL
|
||||||
|
END as 'ENDPOINT_AUTH_API_KEY_ADD_TO',
|
||||||
|
[CFG_ENDPOINT_AUTH].[TOKEN] as 'ENDPOINT_AUTH_TOKEN',
|
||||||
|
[CFG_ENDPOINT_AUTH].[USERNAME] as 'ENDPOINT_AUTH_USERNAME',
|
||||||
|
[CFG_ENDPOINT_AUTH].[PASSWORD] as 'ENDPOINT_AUTH_PASSWORD',
|
||||||
|
[CFG_ENDPOINT_AUTH].[DOMAIN] as 'ENDPOINT_AUTH_DOMAIN',
|
||||||
|
[CFG_ENDPOINT_AUTH].[WORKSTATION] as 'ENDPOINT_AUTH_WORKSTATION',
|
||||||
|
[CFG_ACTION].[ENDPOINT_PARAMS_ID] as 'ENDPOINT_PARAMS_ID',
|
||||||
|
[CFG_ACTION].[SQL_CONNECTION_ID] as 'SQL_CONNECTION_ID',
|
||||||
|
[CFG_SQL_CONNECTION].[SERVER] as 'SQL_CONNECTION_SERVER',
|
||||||
|
[CFG_SQL_CONNECTION].[DATENBANK] as 'SQL_CONNECTION_DB',
|
||||||
|
[CFG_SQL_CONNECTION].[USERNAME] as 'SQL_CONNECTION_USERNAME',
|
||||||
|
[CFG_SQL_CONNECTION].[PASSWORD] as 'SQL_CONNECTION_PASSWORD',
|
||||||
|
[CFG_ACTION].[TYPE_ID] as 'REST_TYPE_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 0 THEN 'NONE'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 1 THEN 'GET'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 2 THEN 'POST'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 3 THEN 'PUT'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 4 THEN 'PATCH'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 5 THEN 'DELETE'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 6 THEN 'HEAD'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 7 THEN 'OPTIONS'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 8 THEN 'CONNECT'
|
||||||
|
WHEN [CFG_ACTION].[TYPE_ID] = 9 THEN 'TRACE'
|
||||||
|
ELSE 'INVALID'
|
||||||
|
END as 'REST_TYPE',
|
||||||
|
[CFG_ACTION].[PREPROCESSING_QUERY] as 'PREPROCESSING_QUERY',
|
||||||
|
[CFG_ACTION].[HEADER_QUERY] as 'HEADER_QUERY',
|
||||||
|
[CFG_ACTION].[BODY_QUERY] as 'BODY_QUERY',
|
||||||
|
[CFG_ACTION].[POSTPROCESSING_QUERY] as 'POSTPROCESSING_QUERY',
|
||||||
|
[CFG_ACTION].[ERROR_ACTION_ID] as 'ERROR_ACTION_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_ACTION].[ERROR_ACTION_ID] = 0 THEN 'STOP'
|
||||||
|
WHEN [CFG_ACTION].[ERROR_ACTION_ID] = 1 THEN 'CONTINUE'
|
||||||
|
ELSE 'INVALID'
|
||||||
|
END as 'ERROR_ACTION'
|
||||||
|
|
||||||
|
FROM [TBREC_CFG_ACTION] as [CFG_ACTION] WITH (NOLOCK)
|
||||||
|
INNER JOIN [TBREC_CFG_PROFILE] as [CFG_PROFILE] WITH (NOLOCK) ON [CFG_ACTION].[PROFILE_ID] = [CFG_PROFILE].[GUID]
|
||||||
|
INNER JOIN [TBREC_CFG_ENDPOINT] as [CFG_ENDPOINT] WITH (NOLOCK) ON [CFG_ACTION].[ENDPOINT_ID] = [CFG_ENDPOINT].[GUID]
|
||||||
|
LEFT JOIN [TBREC_CFG_ENDPOINT_AUTH] as [CFG_ENDPOINT_AUTH] WITH (NOLOCK) ON [CFG_ACTION].[ENDPOINT_AUTH_ID] = [CFG_ENDPOINT_AUTH].[GUID]
|
||||||
|
LEFT JOIN [TBDD_CONNECTION] as [CFG_SQL_CONNECTION] WITH (NOLOCK) ON [CFG_ACTION].[SQL_CONNECTION_ID] = [CFG_SQL_CONNECTION].[GUID]
|
||||||
|
|
||||||
|
WHERE [CFG_ACTION].[ACTIVE] = 1
|
||||||
|
AND [CFG_PROFILE].[ACTIVE] = 1
|
||||||
|
AND [CFG_ENDPOINT].[ACTIVE] = 1
|
||||||
|
AND ([CFG_ACTION].[ENDPOINT_AUTH_ID] IS NULL OR [CFG_ENDPOINT_AUTH].[ACTIVE] = 1)
|
||||||
|
|
||||||
|
ORDER BY [CFG_ACTION].[PROFILE_ID] ASC, [CFG_ACTION].[SEQUENCE] ASC, [CFG_ACTION].[GUID] ASC;
|
||||||
|
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[VWREC_ACTION_IO_INS]
|
||||||
|
ON [dbo].[VWREC_ACTION]
|
||||||
|
INSTEAD OF INSERT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
THROW 51000, 'DML is not allowed on view [dbo].[VWREC_ACTION]. Use these Procedure instead: [PRREC_INSERT_OBJECT]', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[VWREC_ACTION_IO_UPD]
|
||||||
|
ON [dbo].[VWREC_ACTION]
|
||||||
|
INSTEAD OF UPDATE
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
THROW 52000, 'DML is not allowed on view [dbo].[VWREC_ACTION]. Use these Procedure instead: [PRREC_UPDATE_OBJECT]', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[VWREC_ACTION_IO_DEL]
|
||||||
|
ON [dbo].[VWREC_ACTION]
|
||||||
|
INSTEAD OF DELETE
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
THROW 53000, 'DML is not allowed on view [dbo].[VWREC_ACTION]. Use these Procedure instead: [PRREC_DELETE_OBJECT]', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
86
current/[DD_ECM]-Database/ReC/[VWREC_PROFILE].sql
Normal file
86
current/[DD_ECM]-Database/ReC/[VWREC_PROFILE].sql
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER VIEW [dbo].[VWREC_PROFILE]
|
||||||
|
AS
|
||||||
|
SELECT TOP (100) PERCENT
|
||||||
|
[CFG_PROFILE].[GUID] as 'PROFILE_GUID',
|
||||||
|
[CFG_PROFILE].[ACTIVE] as 'ACTIVE',
|
||||||
|
[CFG_PROFILE].[TYPE_ID] as 'TYPE_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_PROFILE].[TYPE_ID] = 1 THEN 'HTTP'
|
||||||
|
WHEN [CFG_PROFILE].[TYPE_ID] = 2 THEN 'HTTPS'
|
||||||
|
ELSE 'INVALID'
|
||||||
|
END as 'TYPE',
|
||||||
|
[CFG_PROFILE].[MANDANTOR] as 'MANDANTOR',
|
||||||
|
[CFG_PROFILE].[PROFILE_NAME] as 'PROFILE_NAME',
|
||||||
|
[CFG_PROFILE].[DESCRIPTION] as 'DESCRIPTION',
|
||||||
|
[CFG_PROFILE].[LOG_LEVEL_ID] as 'LOG_LEVEL_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_PROFILE].[LOG_LEVEL_ID] = 0 THEN 'TRACE'
|
||||||
|
WHEN [CFG_PROFILE].[LOG_LEVEL_ID] = 1 THEN 'DEBUG'
|
||||||
|
WHEN [CFG_PROFILE].[LOG_LEVEL_ID] = 2 THEN 'INFO'
|
||||||
|
WHEN [CFG_PROFILE].[LOG_LEVEL_ID] = 3 THEN 'WARN'
|
||||||
|
WHEN [CFG_PROFILE].[LOG_LEVEL_ID] = 4 THEN 'ERROR'
|
||||||
|
WHEN [CFG_PROFILE].[LOG_LEVEL_ID] = 5 THEN 'CRITICAL'
|
||||||
|
WHEN [CFG_PROFILE].[LOG_LEVEL_ID] = 6 THEN 'NONE'
|
||||||
|
ELSE 'INVALID'
|
||||||
|
END as 'LOG_LEVEL',
|
||||||
|
[CFG_PROFILE].[LANGUAGE_ID] as 'LANGUAGE_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_PROFILE].[LANGUAGE_ID] = 1031 THEN 'de-de'
|
||||||
|
WHEN [CFG_PROFILE].[LANGUAGE_ID] = 1033 THEN 'en-us'
|
||||||
|
ELSE 'INVALID'
|
||||||
|
END as 'LANGUAGE',
|
||||||
|
[CFG_PROFILE].[ADDED_WHO] as 'ADDED_WHO',
|
||||||
|
[CFG_PROFILE].[ADDED_WHEN] as 'ADDED_WHEN',
|
||||||
|
[CFG_PROFILE].[CHANGED_WHO] as 'CHANGED_WHO',
|
||||||
|
[CFG_PROFILE].[CHANGED_WHEN] as 'CHANGED_WHEN',
|
||||||
|
[RUN_PROFILE].[FIRST_RUN] as 'FIRST_RUN',
|
||||||
|
[RUN_PROFILE].[LAST_RUN] as 'LAST_RUN',
|
||||||
|
[RUN_PROFILE].[LAST_RESULT] as 'LAST_RESULT'
|
||||||
|
|
||||||
|
FROM [TBREC_CFG_PROFILE] as [CFG_PROFILE] WITH (NOLOCK)
|
||||||
|
LEFT JOIN [TBREC_RUN_PROFILE] as [RUN_PROFILE] WITH (NOLOCK) ON [CFG_PROFILE].[GUID] = [RUN_PROFILE].[PROFILE_ID]
|
||||||
|
|
||||||
|
ORDER BY [CFG_PROFILE].[GUID] ASC;
|
||||||
|
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[TRREC_VWREC_PROFILE_IO_INS]
|
||||||
|
ON [dbo].[VWREC_PROFILE]
|
||||||
|
INSTEAD OF INSERT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
THROW 51000, 'DML is not allowed on view [dbo].[VWREC_PROFILE]. Use these Procedure instead: [PRREC_INSERT_OBJECT]', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[TRREC_VWREC_PROFILE_IO_UPD]
|
||||||
|
ON [dbo].[VWREC_PROFILE]
|
||||||
|
INSTEAD OF UPDATE
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
THROW 52000, 'DML is not allowed on view [dbo].[VWREC_PROFILE]. Use these Procedure instead: [PRREC_UPDATE_OBJECT]', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [dbo].[TRREC_VWREC_PROFILE_IO_DEL]
|
||||||
|
ON [dbo].[VWREC_PROFILE]
|
||||||
|
INSTEAD OF DELETE
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
THROW 53000, 'DML is not allowed on view [dbo].[VWREC_PROFILE]. Use these Procedure instead: [PRREC_DELETE_OBJECT]', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
77
current/[DD_ECM]-Database/ReC/[VWREC_RESULT].sql
Normal file
77
current/[DD_ECM]-Database/ReC/[VWREC_RESULT].sql
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
USE [DD_ECM]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER VIEW [dbo].[VWREC_RESULT]
|
||||||
|
AS
|
||||||
|
SELECT TOP (100) PERCENT
|
||||||
|
[OUT_RESULT].[GUID] as 'RESULT_GUID',
|
||||||
|
[OUT_RESULT].[ACTION_ID] as 'ACTION_ID',
|
||||||
|
[CFG_ACTION].[PROFILE_ID] as 'PROFILE_ID',
|
||||||
|
[CFG_PROFILE].[PROFILE_NAME] as 'PROFILE_NAME',
|
||||||
|
[OUT_RESULT].[STATUS_ID] as 'STATUS_ID',
|
||||||
|
CASE
|
||||||
|
-- None HTTP codes
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 0 THEN 'OK'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 999 THEN 'Error'
|
||||||
|
-- 1xx Informational
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 100 THEN 'Continue'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 101 THEN 'Switching Protocols'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 103 THEN 'Early Hints'
|
||||||
|
-- 2xx Success
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 200 THEN 'OK'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 201 THEN 'Created'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 202 THEN 'Accepted'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 204 THEN 'No Content'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 206 THEN 'Partial Content'
|
||||||
|
-- 3xx Redirection
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 301 THEN 'Moved Permanently'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 302 THEN 'Found'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 304 THEN 'Not Modified'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 307 THEN 'Temporary Redirect'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 308 THEN 'Permanent Redirect'
|
||||||
|
-- 4xx Client Error
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 400 THEN 'Bad Request'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 401 THEN 'Unauthorized'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 403 THEN 'Forbidden'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 404 THEN 'Not Found'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 405 THEN 'Method Not Allowed'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 408 THEN 'Request Timeout'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 429 THEN 'Too Many Requests'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 451 THEN 'Unavailable For Legal Reasons'
|
||||||
|
-- 5xx Server Error
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 500 THEN 'Internal Server Error'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 501 THEN 'Not Implemented'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 502 THEN 'Bad Gateway'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 503 THEN 'Service Unavailable'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 504 THEN 'Gateway Timeout'
|
||||||
|
WHEN [OUT_RESULT].[STATUS_ID] = 511 THEN 'Network Authentication Required'
|
||||||
|
ELSE 'UNKNOWN STATUS'
|
||||||
|
END as 'STATUS',
|
||||||
|
[OUT_RESULT].[RESULT_TYPE_ID] as 'RESULT_TYPE_ID',
|
||||||
|
CASE
|
||||||
|
WHEN [OUT_RESULT].[RESULT_TYPE_ID] = 1 THEN 'PRE'
|
||||||
|
WHEN [OUT_RESULT].[RESULT_TYPE_ID] = 2 THEN 'MAIN'
|
||||||
|
WHEN [OUT_RESULT].[RESULT_TYPE_ID] = 3 THEN 'POST'
|
||||||
|
ELSE 'INVALID'
|
||||||
|
END as 'RESULT_TYPE',
|
||||||
|
[OUT_RESULT].[RESULT_HEADER] as 'RESULT_HEADER',
|
||||||
|
[OUT_RESULT].[RESULT_BODY] as 'RESULT_BODY',
|
||||||
|
[OUT_RESULT].[RESULT_INFO] as 'RESULT_INFO',
|
||||||
|
[OUT_RESULT].[RESULT_ERROR] as 'RESULT_ERROR',
|
||||||
|
[OUT_RESULT].[ADDED_WHO] as 'ADDED_WHO',
|
||||||
|
[OUT_RESULT].[ADDED_WHEN] as 'ADDED_WHEN',
|
||||||
|
[OUT_RESULT].[CHANGED_WHO] as 'CHANGED_WHO',
|
||||||
|
[OUT_RESULT].[CHANGED_WHEN] as 'CHANGED_WHEN'
|
||||||
|
|
||||||
|
FROM [dbo].[TBREC_OUT_RESULT] as [OUT_RESULT] WITH (NOLOCK)
|
||||||
|
LEFT JOIN [dbo].[TBREC_CFG_ACTION] as [CFG_ACTION] WITH (NOLOCK) ON [OUT_RESULT].[ACTION_ID] = [CFG_ACTION].[GUID]
|
||||||
|
LEFT JOIN [dbo].[TBREC_CFG_PROFILE] as [CFG_PROFILE] WITH (NOLOCK) ON [CFG_ACTION].[PROFILE_ID] = [CFG_PROFILE].[GUID]
|
||||||
|
|
||||||
|
ORDER BY [OUT_RESULT].[GUID];
|
||||||
|
|
||||||
|
GO
|
||||||
@@ -0,0 +1,190 @@
|
|||||||
|
USE [DD_ECM]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- [FNCUST_GET_EDMI_ITEM_VALUE]
|
||||||
|
-- =================================================================
|
||||||
|
-- Returns item values from [TBEDMI_ITEM_VALUE] with optional filters,
|
||||||
|
-- fallback handling and EB normalization for INVOICE_REFERENCE specs.
|
||||||
|
--
|
||||||
|
-- Returns: Table (max. 10.000 rows)
|
||||||
|
-- =================================================================
|
||||||
|
|
||||||
|
CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_EDMI_ITEM_VALUE]
|
||||||
|
(
|
||||||
|
@REFERENCE_GUID NVARCHAR(250) = NULL,
|
||||||
|
@SPEC_NAME NVARCHAR(100) = NULL
|
||||||
|
)
|
||||||
|
RETURNS TABLE
|
||||||
|
AS
|
||||||
|
RETURN
|
||||||
|
(
|
||||||
|
--====================================-- SPEC fallback configuration --====================================--
|
||||||
|
-- FALLBACK_ITEM_VALUE: value used when EB is invalid/missing
|
||||||
|
-- ALLOW_FALLBACK: 1 = use fallback, 0 = keep original ITEM_VALUE
|
||||||
|
WITH [CFG_INVOICE_REFERENCE_SPEC] AS
|
||||||
|
(
|
||||||
|
SELECT N'INVOICE_REFERENCE' AS [SPEC_NAME], CAST(N'EB9999999' AS NVARCHAR(100)) AS [FALLBACK_ITEM_VALUE], CAST(1 AS BIT) AS [ALLOW_FALLBACK]
|
||||||
|
UNION ALL SELECT N'INVOICE_REFERENCE2', CAST(NULL AS NVARCHAR(100)), CAST(0 AS BIT)
|
||||||
|
UNION ALL SELECT N'INVOICE_REFERENCE3', N'', CAST(0 AS BIT)
|
||||||
|
),
|
||||||
|
|
||||||
|
--=======================================-- Source data (filtered) --=======================================--
|
||||||
|
[SRC_FILTERED_DATA] AS
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
[GUID],
|
||||||
|
[REFERENCE_GUID],
|
||||||
|
[ITEM_DESCRIPTION],
|
||||||
|
[ITEM_VALUE],
|
||||||
|
[CREATEDWHEN],
|
||||||
|
[CREATEDWHO],
|
||||||
|
[CHANGEDWHEN],
|
||||||
|
[GROUP_COUNTER],
|
||||||
|
[SPEC_NAME],
|
||||||
|
[IS_REQUIRED],
|
||||||
|
[CHANGEDWHO],
|
||||||
|
[COMMENT]
|
||||||
|
FROM [dbo].[TBEDMI_ITEM_VALUE]
|
||||||
|
WHERE (@REFERENCE_GUID IS NULL OR [REFERENCE_GUID] = @REFERENCE_GUID)
|
||||||
|
AND (@SPEC_NAME IS NULL OR [SPEC_NAME] = @SPEC_NAME)
|
||||||
|
)
|
||||||
|
|
||||||
|
--========================================-- Final output resultset --========================================--
|
||||||
|
SELECT TOP (10000)
|
||||||
|
[GUID],
|
||||||
|
[REFERENCE_GUID],
|
||||||
|
[ITEM_DESCRIPTION],
|
||||||
|
CASE
|
||||||
|
-- Normalize ITEM_VALUE for configured INVOICE_REFERENCE specs only
|
||||||
|
WHEN [CHK_SPEC].[IS_INVOICE_REFERENCE_SPEC] = 1
|
||||||
|
THEN [NORM_EB].[NORMALIZED_EB_VALUE]
|
||||||
|
ELSE [OUT_RESULT_DATA].[ITEM_VALUE]
|
||||||
|
END AS [ITEM_VALUE],
|
||||||
|
[OUT_RESULT_DATA].[CREATEDWHEN],
|
||||||
|
[OUT_RESULT_DATA].[CREATEDWHO],
|
||||||
|
[OUT_RESULT_DATA].[CHANGEDWHEN],
|
||||||
|
[OUT_RESULT_DATA].[GROUP_COUNTER],
|
||||||
|
[OUT_RESULT_DATA].[SPEC_NAME],
|
||||||
|
[OUT_RESULT_DATA].[IS_REQUIRED],
|
||||||
|
[OUT_RESULT_DATA].[CHANGEDWHO],
|
||||||
|
[OUT_RESULT_DATA].[COMMENT],
|
||||||
|
[OUT_RESULT_DATA].[IS_FALLBACK],
|
||||||
|
CASE
|
||||||
|
-- Flag rows where configured EB fallback was actually applied
|
||||||
|
WHEN [CHK_SPEC].[IS_INVOICE_REFERENCE_SPEC] = 1
|
||||||
|
AND
|
||||||
|
[CHK_SPEC].[ALLOW_FALLBACK] = 1
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
([CHK_SPEC].[CONFIGURED_FALLBACK_ITEM_VALUE] IS NULL AND [NORM_EB].[NORMALIZED_EB_VALUE] IS NULL)
|
||||||
|
OR [NORM_EB].[NORMALIZED_EB_VALUE] = [CHK_SPEC].[CONFIGURED_FALLBACK_ITEM_VALUE]
|
||||||
|
)
|
||||||
|
THEN CAST(1 AS BIT)
|
||||||
|
ELSE CAST(0 AS BIT)
|
||||||
|
END AS [IS_EB_FALLBACK]
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
-- Real rows from source table
|
||||||
|
SELECT
|
||||||
|
[GUID],
|
||||||
|
[REFERENCE_GUID],
|
||||||
|
[ITEM_DESCRIPTION],
|
||||||
|
[ITEM_VALUE],
|
||||||
|
[CREATEDWHEN],
|
||||||
|
[CREATEDWHO],
|
||||||
|
[CHANGEDWHEN],
|
||||||
|
[GROUP_COUNTER],
|
||||||
|
[SPEC_NAME],
|
||||||
|
[IS_REQUIRED],
|
||||||
|
[CHANGEDWHO],
|
||||||
|
[COMMENT],
|
||||||
|
CAST(0 AS BIT) AS [IS_FALLBACK]
|
||||||
|
FROM [SRC_FILTERED_DATA]
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
-- Failsafe row if source query returns no row
|
||||||
|
SELECT
|
||||||
|
CAST(0 AS BIGINT) AS [GUID],
|
||||||
|
ISNULL(@REFERENCE_GUID, N'FAILSAFE') AS [REFERENCE_GUID],
|
||||||
|
N'NO_DATA_FOUND' AS [ITEM_DESCRIPTION],
|
||||||
|
N'' AS [ITEM_VALUE],
|
||||||
|
GETDATE() AS [CREATEDWHEN],
|
||||||
|
N'SYSTEM' AS [CREATEDWHO],
|
||||||
|
NULL AS [CHANGEDWHEN],
|
||||||
|
CAST(0 AS INT) AS [GROUP_COUNTER],
|
||||||
|
ISNULL(@SPEC_NAME, N'FAILSAFE') AS [SPEC_NAME],
|
||||||
|
CAST(0 AS BIT) AS [IS_REQUIRED],
|
||||||
|
'SYSTEM' AS [CHANGEDWHO],
|
||||||
|
'FAILSAFE_ROW_RETURNED' AS [COMMENT],
|
||||||
|
CAST(1 AS BIT) AS [IS_FALLBACK]
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM [SRC_FILTERED_DATA])
|
||||||
|
) AS [OUT_RESULT_DATA]
|
||||||
|
|
||||||
|
--===================================-- Resolve spec configuration --===================================--
|
||||||
|
OUTER APPLY (
|
||||||
|
SELECT TOP (1)
|
||||||
|
v.[SPEC_NAME] AS [MATCHED_SPEC_NAME],
|
||||||
|
v.[FALLBACK_ITEM_VALUE] AS [CONFIGURED_FALLBACK_ITEM_VALUE],
|
||||||
|
v.[ALLOW_FALLBACK] AS [ALLOW_FALLBACK]
|
||||||
|
FROM [CFG_INVOICE_REFERENCE_SPEC] v
|
||||||
|
WHERE v.[SPEC_NAME] = UPPER(CONVERT(NVARCHAR(200), ISNULL([OUT_RESULT_DATA].[SPEC_NAME], N'')))
|
||||||
|
) AS [CFG_SPEC]
|
||||||
|
|
||||||
|
--=============================-- Derived check flags and fallback value --=============================--
|
||||||
|
CROSS APPLY (
|
||||||
|
SELECT
|
||||||
|
CASE
|
||||||
|
WHEN [CFG_SPEC].[MATCHED_SPEC_NAME] IS NULL THEN CAST(0 AS BIT)
|
||||||
|
ELSE CAST(1 AS BIT)
|
||||||
|
END AS [IS_INVOICE_REFERENCE_SPEC],
|
||||||
|
[CFG_SPEC].[CONFIGURED_FALLBACK_ITEM_VALUE] AS [CONFIGURED_FALLBACK_ITEM_VALUE],
|
||||||
|
ISNULL([CFG_SPEC].[ALLOW_FALLBACK], CAST(0 AS BIT)) AS [ALLOW_FALLBACK]
|
||||||
|
) AS [CHK_SPEC]
|
||||||
|
|
||||||
|
--=============================-- Preprocessing for EB pattern matching --=============================--
|
||||||
|
CROSS APPLY (
|
||||||
|
SELECT LTRIM(RTRIM(ISNULL([OUT_RESULT_DATA].[ITEM_VALUE], N''))) AS [CLEAN_ITEM_VALUE]
|
||||||
|
) AS [VAL_CLEAN]
|
||||||
|
|
||||||
|
CROSS APPLY (
|
||||||
|
SELECT N' ' + [VAL_CLEAN].[CLEAN_ITEM_VALUE] + N' ' AS [PADDED_ITEM_VALUE]
|
||||||
|
) AS [VAL_PADDED]
|
||||||
|
|
||||||
|
CROSS APPLY (
|
||||||
|
-- Match EB + 8 digits with non-digit boundaries left and right
|
||||||
|
SELECT PATINDEX(
|
||||||
|
N'%[^0-9]EB[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%',
|
||||||
|
[VAL_PADDED].[PADDED_ITEM_VALUE]
|
||||||
|
) AS [EB_PATTERN_POS]
|
||||||
|
) AS [PAT_EB]
|
||||||
|
|
||||||
|
--====================================-- Normalize EB output value --====================================--
|
||||||
|
CROSS APPLY (
|
||||||
|
SELECT
|
||||||
|
CASE
|
||||||
|
-- Exact EB value
|
||||||
|
WHEN [VAL_CLEAN].[CLEAN_ITEM_VALUE] LIKE N'EB[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
|
||||||
|
THEN [VAL_CLEAN].[CLEAN_ITEM_VALUE]
|
||||||
|
|
||||||
|
-- Extract EB value from a longer free-text string
|
||||||
|
WHEN [PAT_EB].[EB_PATTERN_POS] > 0
|
||||||
|
THEN SUBSTRING([VAL_PADDED].[PADDED_ITEM_VALUE], [PAT_EB].[EB_PATTERN_POS] + 1, 10)
|
||||||
|
|
||||||
|
-- No valid EB found: fallback if allowed, otherwise keep original value
|
||||||
|
ELSE CASE
|
||||||
|
WHEN [CHK_SPEC].[ALLOW_FALLBACK] = 1 THEN [CHK_SPEC].[CONFIGURED_FALLBACK_ITEM_VALUE]
|
||||||
|
ELSE [OUT_RESULT_DATA].[ITEM_VALUE]
|
||||||
|
END
|
||||||
|
END AS [NORMALIZED_EB_VALUE]
|
||||||
|
) AS [NORM_EB]
|
||||||
|
|
||||||
|
--=========================================-- Default result ordering --=========================================--
|
||||||
|
ORDER BY [GROUP_COUNTER] ASC
|
||||||
|
);
|
||||||
|
GO
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
USE [DD_SYS]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- [PRDD_TEST_PERFORMANCE]
|
||||||
|
-- =================================================================
|
||||||
|
-- Runs a configurable performance smoke test: creates a table, inserts data and queries it.
|
||||||
|
-- Minimum requirement: MS SQL Server 2016
|
||||||
|
--
|
||||||
|
-- Returns: INT Value - 0 = Everything worked well
|
||||||
|
-- =================================================================
|
||||||
|
-- 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: 15.12.2025 / MK
|
||||||
|
-- Version Date / Editor: 23.12.2025 / MK
|
||||||
|
-- Version Number: 1.1.0.1
|
||||||
|
-- =================================================================
|
||||||
|
-- History:
|
||||||
|
-- 15.12.2025 / MK - First Version
|
||||||
|
-- 23.12.2025 / MK - Add DATA_COMPRESSION = PAGE to log table PK, fix minor formatting, add pRANDOMDATA parameter
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [dbo].[PRDD_TEST_PERFORMANCE] (
|
||||||
|
@pTARGETDB NVARCHAR(128) = NULL, -- Database to run the test against (defaults to current database)
|
||||||
|
@pSCHEMA NVARCHAR(128) = 'dbo', -- Schema of the test table
|
||||||
|
@pTABLENAME NVARCHAR(128) = 'TBDD_TEST_PERFORMANCE', -- Name of the test table to create/use
|
||||||
|
@pROWCOUNT BIGINT = 1000000, -- Number of rows to insert
|
||||||
|
@pBATCHSIZE BIGINT = 100000, -- Rows per batch; controls transaction size/log impact
|
||||||
|
@pPADLENGTH INT = 100, -- Length of the CHAR padding column
|
||||||
|
@pRANDOMDATA BIT = 0, -- 1 = insert randomized Payload/Pad values
|
||||||
|
@pDROPANDRECREATE BIT = 1, -- Set to 1 to drop/recreate the table before inserting, otherwise reuse existing table
|
||||||
|
@pLOGLEVEL NVARCHAR(25) = 'INFO' -- Set to 'INFO','WARN' or 'ERROR' (or NULL to disable) logging to table: [TBDD_TEST_PERFORMANCE_LOG]
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
--================================================-- Set session options --===============================================--
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--=========================================-- Parameter copies (avoid sniffing) --========================================--
|
||||||
|
DECLARE @TARGETDB NVARCHAR(128) = LTRIM(RTRIM(ISNULL(@pTARGETDB,DB_NAME()))),
|
||||||
|
@SCHEMA NVARCHAR(128) = LTRIM(RTRIM(ISNULL(@pSCHEMA,'dbo'))),
|
||||||
|
@TABLENAME NVARCHAR(128) = LTRIM(RTRIM(ISNULL(@pTABLENAME,'TBDD_TEST_PERFORMANCE'))),
|
||||||
|
@ROWCOUNT BIGINT = ISNULL(@pROWCOUNT,1000000),
|
||||||
|
@BATCHSIZE BIGINT = ISNULL(@pBATCHSIZE,100000),
|
||||||
|
@PADLENGTH INT = ISNULL(@pPADLENGTH,100),
|
||||||
|
@RANDOMDATA BIT = ISNULL(@pRANDOMDATA,0),
|
||||||
|
@DROPANDRECREATE BIT = ISNULL(@pDROPANDRECREATE,1),
|
||||||
|
@LOGLEVEL NVARCHAR(25) = UPPER(LTRIM(RTRIM(ISNULL(@pLOGLEVEL,'INFO'))));
|
||||||
|
----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--=================================================-- Declare runtime variables --========================================--
|
||||||
|
DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||||
|
DECLARE @QualifiedTable NVARCHAR(300) = QUOTENAME(@SCHEMA) + '.' + QUOTENAME(@TABLENAME),
|
||||||
|
@FullTable NVARCHAR(400) = QUOTENAME(@TARGETDB) + '.' + QUOTENAME(@SCHEMA) + '.' + QUOTENAME(@TABLENAME),
|
||||||
|
@ProductVersion sql_variant,
|
||||||
|
@ProductMainVersion INT,
|
||||||
|
@ProductLevel sql_variant,
|
||||||
|
@ProductEdition sql_variant,
|
||||||
|
@SQLCommand NVARCHAR(MAX) = NULL,
|
||||||
|
@RowsRemaining BIGINT = 0,
|
||||||
|
@RowsInserted BIGINT = 0,
|
||||||
|
@BatchStart BIGINT = 1,
|
||||||
|
@BatchNumber INT = 0,
|
||||||
|
@InsertStart DATETIME2(3) = NULL,
|
||||||
|
@InsertEnd DATETIME2(3) = NULL,
|
||||||
|
@return_status INT = 0,
|
||||||
|
@return_status_text NVARCHAR(MAX) = 'START PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(varchar(50),GETDATE(),120),
|
||||||
|
@return_error_text NVARCHAR(MAX) = '';
|
||||||
|
----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--=================================================-- Failsafe settings --=================================================--
|
||||||
|
IF (@ROWCOUNT < 0) SET @ROWCOUNT = 0;
|
||||||
|
IF (@BATCHSIZE <= 0) SET @BATCHSIZE = @ROWCOUNT;
|
||||||
|
IF (@PADLENGTH < 1) SET @PADLENGTH = 1;
|
||||||
|
IF (@LOGLEVEL NOT IN ('INFO','WARN','ERROR')) SET @LOGLEVEL = 'ERROR';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--=================================================-- Output parameters --================================================--
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
PRINT @return_status_text;
|
||||||
|
PRINT '';
|
||||||
|
PRINT 'PARAMETER01 - @TARGETDB: ' + CONVERT(NVARCHAR(128),@TARGETDB);
|
||||||
|
PRINT 'PARAMETER02 - @SCHEMA: ' + CONVERT(NVARCHAR(128),@SCHEMA);
|
||||||
|
PRINT 'PARAMETER03 - @TABLENAME: ' + CONVERT(NVARCHAR(128),@TABLENAME);
|
||||||
|
PRINT 'PARAMETER04 - @ROWCOUNT: ' + CONVERT(NVARCHAR(100),@ROWCOUNT);
|
||||||
|
PRINT 'PARAMETER05 - @BATCHSIZE: ' + CONVERT(NVARCHAR(100),@BATCHSIZE);
|
||||||
|
PRINT 'PARAMETER06 - @PADLENGTH: ' + CONVERT(NVARCHAR(100),@PADLENGTH);
|
||||||
|
PRINT 'PARAMETER07 - @RANDOMDATA: ' + CONVERT(NVARCHAR(1),@RANDOMDATA);
|
||||||
|
PRINT 'PARAMETER08 - @DROPANDRECREATE: ' + CONVERT(NVARCHAR(1),@DROPANDRECREATE);
|
||||||
|
PRINT 'PARAMETER09 - @LOGLEVEL: ' + CONVERT(NVARCHAR(25),@LOGLEVEL);
|
||||||
|
PRINT '';
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--=================================================-- Get server infos --==================================================--
|
||||||
|
SELECT @ProductVersion = SERVERPROPERTY('productversion'), @ProductLevel = SERVERPROPERTY ('productlevel'), @ProductEdition = SERVERPROPERTY ('edition');
|
||||||
|
SET @ProductMainVersion = ISNULL(LEFT(convert(NVARCHAR(100),@ProductVersion), CHARINDEX('.', convert(NVARCHAR(100),@ProductVersion)) - 1),0);
|
||||||
|
|
||||||
|
PRINT 'Informations about this Server:';
|
||||||
|
PRINT '@MySessionID: ' + CONVERT(NVARCHAR(100),@@SPID);
|
||||||
|
PRINT '@ProductVersion: ' + CONVERT(NVARCHAR(100),@ProductVersion);
|
||||||
|
PRINT '@ProductMainVersion: ' + CONVERT(NVARCHAR(100),@ProductMainVersion);
|
||||||
|
PRINT '@ProductLevel: ' + CONVERT(NVARCHAR(100),@ProductLevel);
|
||||||
|
PRINT '@ProductEdition: ' + CONVERT(NVARCHAR(100),@ProductEdition);
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--==============================================-- Prepare the log table --================================================--
|
||||||
|
IF (@LOGLEVEL is not NULL) BEGIN
|
||||||
|
PRINT '';
|
||||||
|
IF EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'TBDD_TEST_PERFORMANCE_LOG') BEGIN
|
||||||
|
PRINT 'INFO: Log table already exists';
|
||||||
|
END; ELSE BEGIN
|
||||||
|
PRINT 'INFO: Log table does not exist, trying to create...';
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBDD_TEST_PERFORMANCE_LOG](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[LOG_LEVEL] [NVARCHAR](25) NOT NULL,
|
||||||
|
[MESSAGE1] [NVARCHAR](max) NOT NULL,
|
||||||
|
[MESSAGE2] [NVARCHAR](max) NULL,
|
||||||
|
[MESSAGE3] [NVARCHAR](max) NULL,
|
||||||
|
[MESSAGE4] [NVARCHAR](max) NULL,
|
||||||
|
[MESSAGE5] [NVARCHAR](max) NULL,
|
||||||
|
[COMMENT] [NVARCHAR](max) NULL,
|
||||||
|
[ADDED_WHO] [NVARCHAR](50) NOT NULL,
|
||||||
|
[ADDED_WHEN] [datetime] NOT NULL,
|
||||||
|
CONSTRAINT [PK_TBDD_TEST_PERFORMANCE_LOG_GUID] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, DATA_COMPRESSION = PAGE) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBDD_TEST_PERFORMANCE_LOG] ADD CONSTRAINT [DF_TBDD_TEST_PERFORMANCE_LOG_ADDED_WHO] DEFAULT (suser_sname()) FOR [ADDED_WHO];
|
||||||
|
ALTER TABLE [dbo].[TBDD_TEST_PERFORMANCE_LOG] ADD CONSTRAINT [DF_TBDD_TEST_PERFORMANCE_LOG_ADDED_WHEN] DEFAULT (sysdatetime()) FOR [ADDED_WHEN];
|
||||||
|
|
||||||
|
END;
|
||||||
|
END; ELSE BEGIN
|
||||||
|
PRINT '';
|
||||||
|
PRINT 'WARN: Skipping Logging to log table!';
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
--===============================================-- Check for log table --================================================--
|
||||||
|
IF NOT EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'TBDD_TEST_PERFORMANCE_LOG') BEGIN
|
||||||
|
SET @LOGLEVEL = 'NONE';
|
||||||
|
PRINT 'ERROR: Because the log table [TBDD_TEST_PERFORMANCE_LOG] does not exist, logging is disabled for this run!';
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
--===============================================-- Log start to table --=================================================--
|
||||||
|
IF ((@LOGLEVEL in ('INFO')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES (@LOGLEVEL,'preparing', 'procedure', @return_status, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--===============================================-- Validate target database --============================================--
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [sys].[databases] WHERE [name] = @TARGETDB) BEGIN
|
||||||
|
SET @return_status = 10;
|
||||||
|
SET @return_status_text = 'ERROR: Target database [' + @TARGETDB + '] does not exist!';
|
||||||
|
PRINT @return_status_text;
|
||||||
|
|
||||||
|
IF ((@LOGLEVEL in ('INFO','WARN','ERROR')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES ('ERROR', 'validation', 'database', @return_status, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
|
||||||
|
RETURN @return_status;
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
|
||||||
|
--======================================-- Drop and recreate or ensure table --==========================================--
|
||||||
|
IF (@DROPANDRECREATE = 1) BEGIN
|
||||||
|
|
||||||
|
SET @return_status_text = 'INFO: Dropping and recreating table ' + @FullTable;
|
||||||
|
PRINT @return_status_text;
|
||||||
|
|
||||||
|
SET @SQLCommand = N'USE ' + QUOTENAME(@TARGETDB) + N';
|
||||||
|
IF OBJECT_ID(''' + @QualifiedTable + ''',''U'') IS NOT NULL
|
||||||
|
DROP TABLE ' + @QualifiedTable + N';
|
||||||
|
|
||||||
|
CREATE TABLE ' + @QualifiedTable + N'(
|
||||||
|
[Id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||||
|
[Payload] BIGINT NOT NULL,
|
||||||
|
[CreatedAt] DATETIME2(3) NOT NULL DEFAULT SYSUTCDATETIME(),
|
||||||
|
[Pad] CHAR(' + CONVERT(NVARCHAR(10),@PADLENGTH) + N') NOT NULL DEFAULT REPLICATE(''X'',' + CONVERT(NVARCHAR(10),@PADLENGTH) + N')
|
||||||
|
);';
|
||||||
|
|
||||||
|
END; ELSE BEGIN
|
||||||
|
|
||||||
|
SET @return_status_text = 'INFO: Ensuring table ' + @FullTable + ' exists (DROPANDRECREATE = 0)';
|
||||||
|
PRINT @return_status_text;
|
||||||
|
|
||||||
|
SET @SQLCommand = N'USE ' + QUOTENAME(@TARGETDB) + N';
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE [name] = N''' + @TABLENAME + N''' AND [schema_id] = SCHEMA_ID(N''' + @SCHEMA + N'''))
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE ' + @QualifiedTable + N'(
|
||||||
|
[Id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||||
|
[Payload] BIGINT NOT NULL,
|
||||||
|
[CreatedAt] DATETIME2(3) NOT NULL DEFAULT SYSUTCDATETIME(),
|
||||||
|
[Pad] CHAR(' + CONVERT(NVARCHAR(10),@PADLENGTH) + N') NOT NULL DEFAULT REPLICATE(''X'',' + CONVERT(NVARCHAR(10),@PADLENGTH) + N')
|
||||||
|
);
|
||||||
|
END;';
|
||||||
|
|
||||||
|
END;
|
||||||
|
|
||||||
|
EXEC @return_status = sp_executesql @SQLCommand;
|
||||||
|
|
||||||
|
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES (@LOGLEVEL, 'table', @FullTable, @return_status, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--================================================-- Insert test data --=================================================--
|
||||||
|
IF (@ROWCOUNT > 0) and (@return_status = 0) BEGIN
|
||||||
|
|
||||||
|
SET @RowsRemaining = @ROWCOUNT;
|
||||||
|
SET @RowsInserted = 0;
|
||||||
|
SET @BatchStart = 1;
|
||||||
|
SET @BatchNumber = 0;
|
||||||
|
SET @InsertStart = SYSUTCDATETIME();
|
||||||
|
|
||||||
|
WHILE (@RowsRemaining > 0) AND (@return_status = 0) BEGIN
|
||||||
|
|
||||||
|
DECLARE @CurrentBatch BIGINT = CASE WHEN @RowsRemaining > @BATCHSIZE THEN @BATCHSIZE ELSE @RowsRemaining END;
|
||||||
|
|
||||||
|
SET @BatchNumber = @BatchNumber + 1;
|
||||||
|
|
||||||
|
SET @SQLCommand = N'USE ' + QUOTENAME(@TARGETDB) + N';
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
;WITH Numbers AS (
|
||||||
|
SELECT TOP (@BatchSize)
|
||||||
|
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS n
|
||||||
|
FROM sys.all_objects a
|
||||||
|
CROSS JOIN sys.all_objects b
|
||||||
|
CROSS JOIN sys.all_objects c
|
||||||
|
)
|
||||||
|
INSERT INTO ' + @QualifiedTable + N' ([Payload],[CreatedAt],[Pad])
|
||||||
|
SELECT
|
||||||
|
CASE WHEN @RandomData = 1 THEN ABS(CAST(CHECKSUM(NEWID()) AS BIGINT)) ELSE @BatchStart + n - 1 END,
|
||||||
|
DATEADD(SECOND, @BatchStart + n - 1, SYSUTCDATETIME()),
|
||||||
|
CASE WHEN @RandomData = 1
|
||||||
|
THEN LEFT(REPLICATE(REPLACE(CONVERT(VARCHAR(36), NEWID()), ''-'', ''''), CAST(CEILING(@PadLength / 32.0) AS INT)), @PadLength)
|
||||||
|
ELSE REPLICATE(''X'', @PadLength)
|
||||||
|
END
|
||||||
|
FROM Numbers;';
|
||||||
|
|
||||||
|
EXEC @return_status = sp_executesql @SQLCommand,
|
||||||
|
N'@BatchSize BIGINT, @PadLength INT, @BatchStart BIGINT, @RandomData BIT',
|
||||||
|
@BatchSize = @CurrentBatch,
|
||||||
|
@PadLength = @PADLENGTH,
|
||||||
|
@BatchStart = @BatchStart,
|
||||||
|
@RandomData = @RANDOMDATA;
|
||||||
|
|
||||||
|
IF (@return_status = 0) BEGIN
|
||||||
|
SET @RowsRemaining = @RowsRemaining - @CurrentBatch;
|
||||||
|
SET @BatchStart = @BatchStart + @CurrentBatch;
|
||||||
|
SET @RowsInserted = @RowsInserted + @CurrentBatch;
|
||||||
|
|
||||||
|
SET @return_status_text = 'INFO: Batch ' + CONVERT(NVARCHAR(20),@BatchNumber) + ' inserted ' + CONVERT(NVARCHAR(20),@CurrentBatch) + ' rows (total ' + CONVERT(NVARCHAR(20),@RowsInserted) + ').';
|
||||||
|
PRINT @return_status_text;
|
||||||
|
|
||||||
|
IF (@LOGLEVEL in ('INFO','WARN')) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES ('INFO', 'insert_batch', @FullTable, @RowsInserted, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE BEGIN
|
||||||
|
|
||||||
|
SET @return_error_text = 'ERROR: Insert batch ' + CONVERT(NVARCHAR(20),@BatchNumber) + ' failed!';
|
||||||
|
PRINT @return_error_text;
|
||||||
|
|
||||||
|
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES ('ERROR', 'insert_batch', @FullTable, @return_error_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
|
||||||
|
END;
|
||||||
|
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET @InsertEnd = SYSUTCDATETIME();
|
||||||
|
|
||||||
|
IF (@return_status = 0) BEGIN
|
||||||
|
SET @return_status_text = 'INFO: Inserted ' + CONVERT(NVARCHAR(50),@RowsInserted) + ' rows in ' + CONVERT(NVARCHAR(50),CAST(DATEDIFF(MILLISECOND,@InsertStart,@InsertEnd)/1000.0 AS DECIMAL(18,2))) + ' seconds.';
|
||||||
|
PRINT @return_status_text;
|
||||||
|
|
||||||
|
IF (@LOGLEVEL in ('INFO','WARN')) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES ('INFO', 'insert_total', @FullTable, @return_status, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
|
||||||
|
END; ELSE BEGIN
|
||||||
|
|
||||||
|
SET @return_status_text = 'WARN: ROWCOUNT was 0, skipping insert!';
|
||||||
|
PRINT @return_status_text;
|
||||||
|
|
||||||
|
IF (@LOGLEVEL in ('INFO','WARN')) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES ('WARN', 'insert_total', @FullTable, @return_status, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--================================================-- Query the test data --================================================--
|
||||||
|
IF (@return_status = 0) BEGIN
|
||||||
|
|
||||||
|
SET @return_status_text = 'INFO: Running query phase for table ' + @FullTable;
|
||||||
|
PRINT @return_status_text;
|
||||||
|
|
||||||
|
SET @SQLCommand = N'USE ' + QUOTENAME(@TARGETDB) + N';
|
||||||
|
SELECT COUNT(*) AS TotalRows, MIN(Id) AS MinId, MAX(Id) AS MaxId FROM ' + @QualifiedTable + N';
|
||||||
|
SELECT TOP (10) * FROM ' + @QualifiedTable + N' ORDER BY Id DESC;
|
||||||
|
SELECT AVG(CONVERT(FLOAT, [Payload])) AS AvgPayload FROM ' + @QualifiedTable + N';';
|
||||||
|
|
||||||
|
EXEC @return_status = sp_executesql @SQLCommand;
|
||||||
|
|
||||||
|
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES (@LOGLEVEL, 'query', @FullTable, @return_status, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
END TRY BEGIN CATCH
|
||||||
|
|
||||||
|
-- Handle any errors that occur during the process.
|
||||||
|
SELECT @return_status = ERROR_NUMBER(), @return_error_text = ERROR_MESSAGE();
|
||||||
|
|
||||||
|
SET @return_status_text = 'ERROR: ' + @return_error_text;
|
||||||
|
PRINT @return_status_text;
|
||||||
|
|
||||||
|
IF ((@LOGLEVEL in ('INFO','WARN','ERROR')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES ('ERROR', 'catch', @FullTable, @return_status, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
|
||||||
|
END CATCH;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SET @return_status_text = 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||||||
|
|
||||||
|
--================================================-- Log end to table --===================================================--
|
||||||
|
IF ((@LOGLEVEL in ('INFO')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||||||
|
INSERT INTO [TBDD_TEST_PERFORMANCE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||||||
|
VALUES (@LOGLEVEL, 'closing', 'procedure', @return_status, @return_status_text, @MY_PROCEDURE_NAME, GetDate());
|
||||||
|
END;
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
PRINT '';
|
||||||
|
PRINT @return_status_text;
|
||||||
|
PRINT '====================================================================================================';
|
||||||
|
|
||||||
|
Return @return_status;
|
||||||
|
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- Example execution:
|
||||||
|
-- EXEC dbo.PRDD_TEST_PERFORMANCE @pTARGETDB = 'DD_ECM', @pROWCOUNT = 1000000, @pBATCHSIZE = 100000, @pDROPANDRECREATE = 1;
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
USE [DD_ECM]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[TBEDMI_ITEM_VALUE](
|
||||||
|
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[REFERENCE_GUID] [nvarchar](250) NULL,
|
||||||
|
[ITEM_DESCRIPTION] [nvarchar](250) NULL,
|
||||||
|
[ITEM_VALUE] [nvarchar](4000) NULL,
|
||||||
|
[CREATEDWHEN] [datetime] NOT NULL,
|
||||||
|
[CREATEDWHO] [nvarchar](100) NULL,
|
||||||
|
[CHANGEDWHEN] [datetime] NULL,
|
||||||
|
[GROUP_COUNTER] [int] NULL,
|
||||||
|
[SPEC_NAME] [nvarchar](100) NULL,
|
||||||
|
[IS_REQUIRED] [bit] NOT NULL,
|
||||||
|
[CHANGEDWHO] [varchar](100) NULL,
|
||||||
|
[COMMENT] [varchar](3000) NULL,
|
||||||
|
CONSTRAINT [PK_TBEDMI_ITEM_VALUE] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[GUID] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBEDMI_ITEM_VALUE] ADD CONSTRAINT [DF__TBEDMI_IT__CREAT__04EFA97D] DEFAULT (getdate()) FOR [CREATEDWHEN]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[TBEDMI_ITEM_VALUE] ADD CONSTRAINT [DF__TBEDMI_IT__IS_RE__05E3CDB6] DEFAULT ((0)) FOR [IS_REQUIRED]
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
36
current/[DD_IIM]-Database/[MASTER_DEPLOY].sql
Normal file
36
current/[DD_IIM]-Database/[MASTER_DEPLOY].sql
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/* ============================================================================
|
||||||
|
MASTER DEPLOY
|
||||||
|
Führt die getrennten Deploy-Skripte in korrekter Reihenfolge aus.
|
||||||
|
|
||||||
|
WICHTIG:
|
||||||
|
- Dieses Skript benötigt SQLCMD-Modus (SSMS/ADS).
|
||||||
|
- Ausführung im gleichen Verzeichnis wie die referenzierten Dateien.
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
:on error exit
|
||||||
|
|
||||||
|
PRINT 'Starte Deploy: Schema';
|
||||||
|
:r "[SCHEMA_META].sql"
|
||||||
|
|
||||||
|
PRINT 'Starte Deploy: Tabelle';
|
||||||
|
:r "[TBDD_CFG_SYSTEM_INFO].sql"
|
||||||
|
|
||||||
|
PRINT 'Starte Deploy: Prozeduren';
|
||||||
|
:r "[TBDD_CFG_SYSTEM_INFO_PROCEDURES].sql"
|
||||||
|
|
||||||
|
PRINT 'Starte Deploy: Trigger';
|
||||||
|
:r "[TBDD_CFG_SYSTEM_INFO_TRIGGER].sql"
|
||||||
|
|
||||||
|
PRINT 'Starte Deploy: Tabelle FUNCTION_MODULE';
|
||||||
|
:r "[TBDD_CFG_FUNCTION_MODULE].sql"
|
||||||
|
|
||||||
|
PRINT 'Starte Deploy: Prozeduren FUNCTION_MODULE';
|
||||||
|
:r "[TBDD_CFG_FUNCTION_MODULE_PROCEDURES].sql"
|
||||||
|
|
||||||
|
PRINT 'Starte Deploy: Trigger FUNCTION_MODULE';
|
||||||
|
:r "[TBDD_CFG_FUNCTION_MODULE_TRIGGER].sql"
|
||||||
|
|
||||||
|
PRINT 'Starte Deploy: Security Baseline';
|
||||||
|
:r "[SECURITY_META_CFG].sql"
|
||||||
|
|
||||||
|
PRINT 'Deploy abgeschlossen.';
|
||||||
12
current/[DD_IIM]-Database/[SCHEMA_META].sql
Normal file
12
current/[DD_IIM]-Database/[SCHEMA_META].sql
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/* ============================================================================
|
||||||
|
META – SCHEMA-SKRIPT
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
USE [DD_IIM];
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF SCHEMA_ID(N'_meta') IS NULL
|
||||||
|
BEGIN
|
||||||
|
EXEC(N'CREATE SCHEMA [_meta] AUTHORIZATION [dbo];');
|
||||||
|
END;
|
||||||
|
GO
|
||||||
28
current/[DD_IIM]-Database/[SECURITY_META_CFG].sql
Normal file
28
current/[DD_IIM]-Database/[SECURITY_META_CFG].sql
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/* ============================================================================
|
||||||
|
META – SECURITY BASELINE
|
||||||
|
Ziel: Direkte DML auf Konfigurationstabellen unterbinden,
|
||||||
|
Zugriff über freigegebene Prozeduren steuern.
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
USE [DD_IIM];
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'RL_META_CFG_EXEC')
|
||||||
|
BEGIN
|
||||||
|
CREATE ROLE [RL_META_CFG_EXEC] AUTHORIZATION [dbo];
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
DENY INSERT, UPDATE, DELETE ON OBJECT::[_meta].[TBDD_CFG_SYSTEM_INFO] TO [public];
|
||||||
|
DENY INSERT, UPDATE, DELETE ON OBJECT::[_meta].[TBDD_CFG_FUNCTION_MODULE] TO [public];
|
||||||
|
GO
|
||||||
|
|
||||||
|
GRANT EXECUTE ON OBJECT::[_meta].[PRDD_UPSERT_SYSTEM_INFO] TO [RL_META_CFG_EXEC];
|
||||||
|
GRANT EXECUTE ON OBJECT::[_meta].[PRDD_DELETE_SYSTEM_INFO] TO [RL_META_CFG_EXEC];
|
||||||
|
GRANT EXECUTE ON OBJECT::[_meta].[PRDD_UPSERT_FUNCTION_MODULE] TO [RL_META_CFG_EXEC];
|
||||||
|
GRANT EXECUTE ON OBJECT::[_meta].[PRDD_DELETE_FUNCTION_MODULE] TO [RL_META_CFG_EXEC];
|
||||||
|
GO
|
||||||
|
|
||||||
|
/* Mitgliedschaften projektspezifisch vergeben, z. B.:
|
||||||
|
ALTER ROLE [RL_META_CFG_EXEC] ADD MEMBER [<AppUserOderRole>];
|
||||||
|
*/
|
||||||
83
current/[DD_IIM]-Database/[TBDD_CFG_FUNCTION_MODULE].sql
Normal file
83
current/[DD_IIM]-Database/[TBDD_CFG_FUNCTION_MODULE].sql
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
USE [DD_IIM]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF OBJECT_ID(N'_meta.TBDD_CFG_FUNCTION_MODULE', N'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
(
|
||||||
|
[PK_CFG_FUNCTION_MODULE_ID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||||
|
[ACTIVE] [bit] NOT NULL,
|
||||||
|
[INTERNAL] [bit] NOT NULL,
|
||||||
|
[FUNCTION_NAME] [nvarchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
|
||||||
|
[FUNCTION_TYPE] [nvarchar](10) COLLATE Latin1_General_CI_AS NOT NULL,
|
||||||
|
[FUNCTION_DEFINITION] [nvarchar](max) COLLATE Latin1_General_CI_AS NOT NULL,
|
||||||
|
[COMMENT] [nvarchar](500) COLLATE Latin1_General_CI_AS NULL,
|
||||||
|
[VERSION] [smallint] NOT NULL,
|
||||||
|
[CREATED_WHO] [bigint] NOT NULL,
|
||||||
|
[CREATED_WHEN] [datetime2](0) NOT NULL,
|
||||||
|
[CHANGED_WHO] [bigint] NULL,
|
||||||
|
[CHANGED_WHEN] [datetime2](0) NULL,
|
||||||
|
|
||||||
|
CONSTRAINT [TBDD_CFG_FUNCTION_MODULE_primaryKey] PRIMARY KEY NONCLUSTERED HASH
|
||||||
|
(
|
||||||
|
[PK_CFG_FUNCTION_MODULE_ID]
|
||||||
|
)WITH ( BUCKET_COUNT = 65536)
|
||||||
|
)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA );
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS
|
||||||
|
(
|
||||||
|
SELECT 1
|
||||||
|
FROM sys.default_constraints dc
|
||||||
|
JOIN sys.columns c
|
||||||
|
ON c.object_id = dc.parent_object_id
|
||||||
|
AND c.column_id = dc.parent_column_id
|
||||||
|
WHERE dc.parent_object_id = OBJECT_ID(N'_meta.TBDD_CFG_FUNCTION_MODULE', N'U')
|
||||||
|
AND c.name = N'ACTIVE'
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
ALTER TABLE [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
ADD CONSTRAINT [DF_TBDD_CFG_FUNCTION_MODULE_ACTIVE] DEFAULT ((1)) FOR [ACTIVE];
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS
|
||||||
|
(
|
||||||
|
SELECT 1
|
||||||
|
FROM sys.default_constraints dc
|
||||||
|
JOIN sys.columns c
|
||||||
|
ON c.object_id = dc.parent_object_id
|
||||||
|
AND c.column_id = dc.parent_column_id
|
||||||
|
WHERE dc.parent_object_id = OBJECT_ID(N'_meta.TBDD_CFG_FUNCTION_MODULE', N'U')
|
||||||
|
AND c.name = N'INTERNAL'
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
ALTER TABLE [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
ADD CONSTRAINT [DF_TBDD_CFG_FUNCTION_MODULE_INTERNAL] DEFAULT ((0)) FOR [INTERNAL];
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS
|
||||||
|
(
|
||||||
|
SELECT 1
|
||||||
|
FROM sys.default_constraints dc
|
||||||
|
JOIN sys.columns c
|
||||||
|
ON c.object_id = dc.parent_object_id
|
||||||
|
AND c.column_id = dc.parent_column_id
|
||||||
|
WHERE dc.parent_object_id = OBJECT_ID(N'_meta.TBDD_CFG_FUNCTION_MODULE', N'U')
|
||||||
|
AND c.name = N'VERSION'
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
ALTER TABLE [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
ADD CONSTRAINT [DF_TBDD_CFG_FUNCTION_MODULE_VERSION] DEFAULT ((1)) FOR [VERSION];
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,207 @@
|
|||||||
|
/* ============================================================================
|
||||||
|
FUNCTION_MODULE – PROZEDUREN
|
||||||
|
Voraussetzung: Tabelle [_meta].[TBDD_CFG_FUNCTION_MODULE] existiert
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
USE [DD_IIM];
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [_meta].[PRDD_UPSERT_FUNCTION_MODULE]
|
||||||
|
@PK_CFG_FUNCTION_MODULE_ID BIGINT = NULL,
|
||||||
|
@ACTIVE BIT,
|
||||||
|
@INTERNAL BIT,
|
||||||
|
@FUNCTION_NAME NVARCHAR(50),
|
||||||
|
@FUNCTION_TYPE NVARCHAR(10),
|
||||||
|
@FUNCTION_DEFINITION NVARCHAR(MAX),
|
||||||
|
@COMMENT NVARCHAR(500) = NULL,
|
||||||
|
@VERSION SMALLINT = 1,
|
||||||
|
@CREATED_WHO BIGINT,
|
||||||
|
@CREATED_WHEN DATETIME2(0),
|
||||||
|
@CHANGED_WHO BIGINT = NULL,
|
||||||
|
@CHANGED_WHEN DATETIME2(0) = NULL,
|
||||||
|
@OUT_PK_CFG_FUNCTION_MODULE_ID BIGINT OUTPUT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
DECLARE @identity_insert_enabled BIT = 0;
|
||||||
|
DECLARE @next_insert_id BIGINT;
|
||||||
|
DECLARE @app_lock_result INT;
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
SET CONTEXT_INFO 0x544244445F46554E4354494F4E5F4D4F44554C45;
|
||||||
|
|
||||||
|
IF @PK_CFG_FUNCTION_MODULE_ID IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
UPDATE [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
SET [ACTIVE] = @ACTIVE,
|
||||||
|
[INTERNAL] = @INTERNAL,
|
||||||
|
[FUNCTION_NAME] = @FUNCTION_NAME,
|
||||||
|
[FUNCTION_TYPE] = @FUNCTION_TYPE,
|
||||||
|
[FUNCTION_DEFINITION] = @FUNCTION_DEFINITION,
|
||||||
|
[COMMENT] = @COMMENT,
|
||||||
|
[VERSION] = @VERSION,
|
||||||
|
[CHANGED_WHO] = @CHANGED_WHO,
|
||||||
|
[CHANGED_WHEN] = @CHANGED_WHEN
|
||||||
|
WHERE [PK_CFG_FUNCTION_MODULE_ID] = @PK_CFG_FUNCTION_MODULE_ID;
|
||||||
|
|
||||||
|
IF @@ROWCOUNT = 1
|
||||||
|
BEGIN
|
||||||
|
SET @OUT_PK_CFG_FUNCTION_MODULE_ID = @PK_CFG_FUNCTION_MODULE_ID;
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
IF @PK_CFG_FUNCTION_MODULE_ID < 100001
|
||||||
|
BEGIN
|
||||||
|
THROW 52011, 'Explizite PK_CFG_FUNCTION_MODULE_ID muss >= 100001 sein.', 1;
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET @identity_insert_enabled = 1;
|
||||||
|
SET IDENTITY_INSERT [_meta].[TBDD_CFG_FUNCTION_MODULE] ON;
|
||||||
|
|
||||||
|
INSERT INTO [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
(
|
||||||
|
[PK_CFG_FUNCTION_MODULE_ID],
|
||||||
|
[ACTIVE],
|
||||||
|
[INTERNAL],
|
||||||
|
[FUNCTION_NAME],
|
||||||
|
[FUNCTION_TYPE],
|
||||||
|
[FUNCTION_DEFINITION],
|
||||||
|
[COMMENT],
|
||||||
|
[VERSION],
|
||||||
|
[CREATED_WHO],
|
||||||
|
[CREATED_WHEN],
|
||||||
|
[CHANGED_WHO],
|
||||||
|
[CHANGED_WHEN]
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@PK_CFG_FUNCTION_MODULE_ID,
|
||||||
|
@ACTIVE,
|
||||||
|
0,
|
||||||
|
@FUNCTION_NAME,
|
||||||
|
@FUNCTION_TYPE,
|
||||||
|
@FUNCTION_DEFINITION,
|
||||||
|
@COMMENT,
|
||||||
|
@VERSION,
|
||||||
|
@CREATED_WHO,
|
||||||
|
@CREATED_WHEN,
|
||||||
|
@CHANGED_WHO,
|
||||||
|
@CHANGED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET IDENTITY_INSERT [_meta].[TBDD_CFG_FUNCTION_MODULE] OFF;
|
||||||
|
SET @identity_insert_enabled = 0;
|
||||||
|
|
||||||
|
SET @OUT_PK_CFG_FUNCTION_MODULE_ID = @PK_CFG_FUNCTION_MODULE_ID;
|
||||||
|
END;
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
EXEC @app_lock_result = sys.sp_getapplock
|
||||||
|
@Resource = N'_meta.PRDD_UPSERT_FUNCTION_MODULE.IDENTITY_RANGE',
|
||||||
|
@LockMode = N'Exclusive',
|
||||||
|
@LockOwner = N'Session',
|
||||||
|
@LockTimeout = 10000;
|
||||||
|
|
||||||
|
IF @app_lock_result < 0
|
||||||
|
BEGIN
|
||||||
|
THROW 52010, 'Konnte keine exklusive ID-Sperre für [_meta].[TBDD_CFG_FUNCTION_MODULE] erhalten.', 1;
|
||||||
|
END;
|
||||||
|
|
||||||
|
SELECT @next_insert_id = CASE
|
||||||
|
WHEN MAX([PK_CFG_FUNCTION_MODULE_ID]) IS NULL OR MAX([PK_CFG_FUNCTION_MODULE_ID]) < 100000 THEN 100001
|
||||||
|
ELSE MAX([PK_CFG_FUNCTION_MODULE_ID]) + 1
|
||||||
|
END
|
||||||
|
FROM [_meta].[TBDD_CFG_FUNCTION_MODULE];
|
||||||
|
|
||||||
|
SET @identity_insert_enabled = 1;
|
||||||
|
SET IDENTITY_INSERT [_meta].[TBDD_CFG_FUNCTION_MODULE] ON;
|
||||||
|
|
||||||
|
INSERT INTO [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
(
|
||||||
|
[PK_CFG_FUNCTION_MODULE_ID],
|
||||||
|
[ACTIVE],
|
||||||
|
[INTERNAL],
|
||||||
|
[FUNCTION_NAME],
|
||||||
|
[FUNCTION_TYPE],
|
||||||
|
[FUNCTION_DEFINITION],
|
||||||
|
[COMMENT],
|
||||||
|
[VERSION],
|
||||||
|
[CREATED_WHO],
|
||||||
|
[CREATED_WHEN],
|
||||||
|
[CHANGED_WHO],
|
||||||
|
[CHANGED_WHEN]
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@next_insert_id,
|
||||||
|
@ACTIVE,
|
||||||
|
0,
|
||||||
|
@FUNCTION_NAME,
|
||||||
|
@FUNCTION_TYPE,
|
||||||
|
@FUNCTION_DEFINITION,
|
||||||
|
@COMMENT,
|
||||||
|
@VERSION,
|
||||||
|
@CREATED_WHO,
|
||||||
|
@CREATED_WHEN,
|
||||||
|
@CHANGED_WHO,
|
||||||
|
@CHANGED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET IDENTITY_INSERT [_meta].[TBDD_CFG_FUNCTION_MODULE] OFF;
|
||||||
|
SET @identity_insert_enabled = 0;
|
||||||
|
|
||||||
|
EXEC sys.sp_releaseapplock
|
||||||
|
@Resource = N'_meta.PRDD_UPSERT_FUNCTION_MODULE.IDENTITY_RANGE',
|
||||||
|
@LockOwner = N'Session';
|
||||||
|
|
||||||
|
SET @OUT_PK_CFG_FUNCTION_MODULE_ID = @next_insert_id;
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET CONTEXT_INFO 0x00;
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
IF @identity_insert_enabled = 1
|
||||||
|
BEGIN
|
||||||
|
BEGIN TRY
|
||||||
|
SET IDENTITY_INSERT [_meta].[TBDD_CFG_FUNCTION_MODULE] OFF;
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
END CATCH
|
||||||
|
END;
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
EXEC sys.sp_releaseapplock
|
||||||
|
@Resource = N'_meta.PRDD_UPSERT_FUNCTION_MODULE.IDENTITY_RANGE',
|
||||||
|
@LockOwner = N'Session';
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
END CATCH
|
||||||
|
|
||||||
|
SET CONTEXT_INFO 0x00;
|
||||||
|
THROW;
|
||||||
|
END CATCH
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [_meta].[PRDD_DELETE_FUNCTION_MODULE]
|
||||||
|
@PK_CFG_FUNCTION_MODULE_ID BIGINT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
SET CONTEXT_INFO 0x544244445F46554E4354494F4E5F4D4F44554C45;
|
||||||
|
|
||||||
|
DELETE FROM [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
WHERE [PK_CFG_FUNCTION_MODULE_ID] = @PK_CFG_FUNCTION_MODULE_ID;
|
||||||
|
|
||||||
|
SET CONTEXT_INFO 0x00;
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
SET CONTEXT_INFO 0x00;
|
||||||
|
THROW;
|
||||||
|
END CATCH
|
||||||
|
END;
|
||||||
|
GO
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/* ============================================================================
|
||||||
|
FUNCTION_MODULE – TRIGGER
|
||||||
|
Voraussetzung: Tabelle [_meta].[TBDD_CFG_FUNCTION_MODULE] und Prozeduren existieren
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
USE [DD_IIM];
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [_meta].[TBDD_CFG_FUNCTION_MODULE_IO_INS]
|
||||||
|
ON [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
|
||||||
|
AFTER INSERT
|
||||||
|
AS
|
||||||
|
BEGIN ATOMIC WITH
|
||||||
|
(
|
||||||
|
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
|
||||||
|
LANGUAGE = N'us_english'
|
||||||
|
)
|
||||||
|
IF CONTEXT_INFO() IS NULL OR CONTEXT_INFO() <> 0x544244445F46554E4354494F4E5F4D4F44554C45
|
||||||
|
BEGIN
|
||||||
|
THROW 51101, 'Direktes INSERT auf [_meta].[TBDD_CFG_FUNCTION_MODULE] ist nicht erlaubt. Bitte Prozedur [_meta].[PRDD_UPSERT_FUNCTION_MODULE] verwenden.', 1;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [_meta].[TBDD_CFG_FUNCTION_MODULE_IO_UPD]
|
||||||
|
ON [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
|
||||||
|
AFTER UPDATE
|
||||||
|
AS
|
||||||
|
BEGIN ATOMIC WITH
|
||||||
|
(
|
||||||
|
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
|
||||||
|
LANGUAGE = N'us_english'
|
||||||
|
)
|
||||||
|
IF CONTEXT_INFO() IS NULL OR CONTEXT_INFO() <> 0x544244445F46554E4354494F4E5F4D4F44554C45
|
||||||
|
BEGIN
|
||||||
|
THROW 51102, 'Direktes UPDATE auf [_meta].[TBDD_CFG_FUNCTION_MODULE] ist nicht erlaubt. Bitte Prozedur [_meta].[PRDD_UPSERT_FUNCTION_MODULE] verwenden.', 1;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [_meta].[TBDD_CFG_FUNCTION_MODULE_IO_DEL]
|
||||||
|
ON [_meta].[TBDD_CFG_FUNCTION_MODULE]
|
||||||
|
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
|
||||||
|
AFTER DELETE
|
||||||
|
AS
|
||||||
|
BEGIN ATOMIC WITH
|
||||||
|
(
|
||||||
|
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
|
||||||
|
LANGUAGE = N'us_english'
|
||||||
|
)
|
||||||
|
IF CONTEXT_INFO() IS NULL OR CONTEXT_INFO() <> 0x544244445F46554E4354494F4E5F4D4F44554C45
|
||||||
|
BEGIN
|
||||||
|
THROW 51103, 'Direktes DELETE auf [_meta].[TBDD_CFG_FUNCTION_MODULE] ist nicht erlaubt. Bitte Prozedur [_meta].[PRDD_DELETE_FUNCTION_MODULE] verwenden.', 1;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
74
current/[DD_IIM]-Database/[TBDD_CFG_SYSTEM_INFO].sql
Normal file
74
current/[DD_IIM]-Database/[TBDD_CFG_SYSTEM_INFO].sql
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
/* ============================================================================
|
||||||
|
SYSTEM_INFO – TABELLEN-SKRIPT
|
||||||
|
Voraussetzung: Schema [_meta] existiert (siehe [SCHEMA_META].sql)
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
USE [DD_IIM];
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
SET XACT_ABORT ON;
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
BEGIN TRAN;
|
||||||
|
|
||||||
|
IF OBJECT_ID(N'_meta.TBDD_CFG_SYSTEM_INFO', N'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
(
|
||||||
|
[PK_CFG_SYSTEM_INFO_ID] BIGINT IDENTITY(1,1) NOT NULL,
|
||||||
|
[SYSTEM_VERSION] NVARCHAR(50) NOT NULL,
|
||||||
|
[COMMENT] NVARCHAR(4000) NULL,
|
||||||
|
[CREATED_WHO] BIGINT NOT NULL,
|
||||||
|
[CREATED_WHEN] DATETIME2(0) NOT NULL,
|
||||||
|
[CHANGED_WHO] BIGINT NULL,
|
||||||
|
[CHANGED_WHEN] DATETIME2(0) NULL
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF NOT EXISTS
|
||||||
|
(
|
||||||
|
SELECT 1
|
||||||
|
FROM sys.key_constraints kc
|
||||||
|
JOIN sys.tables t ON t.object_id = kc.parent_object_id
|
||||||
|
JOIN sys.schemas s ON s.schema_id = t.schema_id
|
||||||
|
WHERE s.name = N'_meta'
|
||||||
|
AND t.name = N'TBDD_CFG_SYSTEM_INFO'
|
||||||
|
AND kc.type = N'PK'
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
ALTER TABLE [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
ADD CONSTRAINT [PK_CFG_SYSTEM_INFO_ID]
|
||||||
|
PRIMARY KEY CLUSTERED ([PK_CFG_SYSTEM_INFO_ID]);
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM [_meta].[TBDD_CFG_SYSTEM_INFO] WITH (HOLDLOCK, UPDLOCK))
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
(
|
||||||
|
[SYSTEM_VERSION],
|
||||||
|
[COMMENT],
|
||||||
|
[CREATED_WHO],
|
||||||
|
[CREATED_WHEN]
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
N'1.0.0.0',
|
||||||
|
N'Initiale Anlage',
|
||||||
|
1,
|
||||||
|
GETDATE()
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
COMMIT TRAN;
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
IF @@TRANCOUNT > 0 ROLLBACK TRAN;
|
||||||
|
|
||||||
|
DECLARE @msg NVARCHAR(4000) = ERROR_MESSAGE();
|
||||||
|
DECLARE @num INT = ERROR_NUMBER();
|
||||||
|
DECLARE @sev INT = ERROR_SEVERITY();
|
||||||
|
DECLARE @stt INT = ERROR_STATE();
|
||||||
|
RAISERROR(N'Fehler %d: %s', @sev, @stt, @num, @msg);
|
||||||
|
END CATCH;
|
||||||
|
GO
|
||||||
139
current/[DD_IIM]-Database/[TBDD_CFG_SYSTEM_INFO_PROCEDURES].sql
Normal file
139
current/[DD_IIM]-Database/[TBDD_CFG_SYSTEM_INFO_PROCEDURES].sql
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
/* ============================================================================
|
||||||
|
SYSTEM_INFO – PROZEDUREN
|
||||||
|
Voraussetzung: Tabelle [_meta].[TBDD_CFG_SYSTEM_INFO] existiert
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
USE [DD_IIM];
|
||||||
|
GO
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS [_meta].[PRDD_INSERT_SYSTEM_INFO];
|
||||||
|
DROP PROCEDURE IF EXISTS [_meta].[PRDD_UPDATE_SYSTEM_INFO];
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [_meta].[PRDD_UPSERT_SYSTEM_INFO]
|
||||||
|
@PK_CFG_SYSTEM_INFO_ID BIGINT = NULL,
|
||||||
|
@SYSTEM_VERSION NVARCHAR(50),
|
||||||
|
@COMMENT NVARCHAR(4000) = NULL,
|
||||||
|
@CREATED_WHO BIGINT,
|
||||||
|
@CREATED_WHEN DATETIME2(0),
|
||||||
|
@CHANGED_WHO BIGINT = NULL,
|
||||||
|
@CHANGED_WHEN DATETIME2(0) = NULL,
|
||||||
|
@OUT_PK_CFG_SYSTEM_INFO_ID BIGINT OUTPUT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
DECLARE @identity_insert_enabled BIT = 0;
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_allow_tbdd_system_info_dml', @value = 1;
|
||||||
|
|
||||||
|
IF @PK_CFG_SYSTEM_INFO_ID IS NULL
|
||||||
|
BEGIN
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_tbdd_system_info_use_input_pk', @value = 0;
|
||||||
|
|
||||||
|
INSERT INTO [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
(
|
||||||
|
[SYSTEM_VERSION],
|
||||||
|
[COMMENT],
|
||||||
|
[CREATED_WHO],
|
||||||
|
[CREATED_WHEN],
|
||||||
|
[CHANGED_WHO],
|
||||||
|
[CHANGED_WHEN]
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@SYSTEM_VERSION,
|
||||||
|
@COMMENT,
|
||||||
|
@CREATED_WHO,
|
||||||
|
@CREATED_WHEN,
|
||||||
|
@CHANGED_WHO,
|
||||||
|
@CHANGED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @OUT_PK_CFG_SYSTEM_INFO_ID = CAST(@@IDENTITY AS BIGINT);
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
UPDATE [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
SET [SYSTEM_VERSION] = @SYSTEM_VERSION,
|
||||||
|
[COMMENT] = @COMMENT,
|
||||||
|
[CHANGED_WHO] = @CHANGED_WHO,
|
||||||
|
[CHANGED_WHEN] = @CHANGED_WHEN
|
||||||
|
WHERE [PK_CFG_SYSTEM_INFO_ID] = @PK_CFG_SYSTEM_INFO_ID;
|
||||||
|
|
||||||
|
IF @@ROWCOUNT = 0
|
||||||
|
BEGIN
|
||||||
|
SET @identity_insert_enabled = 1;
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_tbdd_system_info_use_input_pk', @value = 1;
|
||||||
|
SET IDENTITY_INSERT [_meta].[TBDD_CFG_SYSTEM_INFO] ON;
|
||||||
|
|
||||||
|
INSERT INTO [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
(
|
||||||
|
[PK_CFG_SYSTEM_INFO_ID],
|
||||||
|
[SYSTEM_VERSION],
|
||||||
|
[COMMENT],
|
||||||
|
[CREATED_WHO],
|
||||||
|
[CREATED_WHEN],
|
||||||
|
[CHANGED_WHO],
|
||||||
|
[CHANGED_WHEN]
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@PK_CFG_SYSTEM_INFO_ID,
|
||||||
|
@SYSTEM_VERSION,
|
||||||
|
@COMMENT,
|
||||||
|
@CREATED_WHO,
|
||||||
|
@CREATED_WHEN,
|
||||||
|
@CHANGED_WHO,
|
||||||
|
@CHANGED_WHEN
|
||||||
|
);
|
||||||
|
|
||||||
|
SET IDENTITY_INSERT [_meta].[TBDD_CFG_SYSTEM_INFO] OFF;
|
||||||
|
SET @identity_insert_enabled = 0;
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_tbdd_system_info_use_input_pk', @value = 0;
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET @OUT_PK_CFG_SYSTEM_INFO_ID = @PK_CFG_SYSTEM_INFO_ID;
|
||||||
|
END;
|
||||||
|
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_tbdd_system_info_use_input_pk', @value = NULL;
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_allow_tbdd_system_info_dml', @value = NULL;
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
IF @identity_insert_enabled = 1
|
||||||
|
BEGIN
|
||||||
|
BEGIN TRY
|
||||||
|
SET IDENTITY_INSERT [_meta].[TBDD_CFG_SYSTEM_INFO] OFF;
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
END CATCH
|
||||||
|
END;
|
||||||
|
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_tbdd_system_info_use_input_pk', @value = NULL;
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_allow_tbdd_system_info_dml', @value = NULL;
|
||||||
|
THROW;
|
||||||
|
END CATCH
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [_meta].[PRDD_DELETE_SYSTEM_INFO]
|
||||||
|
@PK_CFG_SYSTEM_INFO_ID BIGINT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_allow_tbdd_system_info_dml', @value = 1;
|
||||||
|
|
||||||
|
DELETE FROM [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
WHERE [PK_CFG_SYSTEM_INFO_ID] = @PK_CFG_SYSTEM_INFO_ID;
|
||||||
|
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_allow_tbdd_system_info_dml', @value = NULL;
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
EXEC sys.sp_set_session_context @key = N'_meta_allow_tbdd_system_info_dml', @value = NULL;
|
||||||
|
THROW;
|
||||||
|
END CATCH
|
||||||
|
END;
|
||||||
|
GO
|
||||||
114
current/[DD_IIM]-Database/[TBDD_CFG_SYSTEM_INFO_TRIGGER].sql
Normal file
114
current/[DD_IIM]-Database/[TBDD_CFG_SYSTEM_INFO_TRIGGER].sql
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
/* ============================================================================
|
||||||
|
SYSTEM_INFO – TRIGGER
|
||||||
|
Voraussetzung: Tabelle [_meta].[TBDD_CFG_SYSTEM_INFO] und Prozeduren existieren
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
USE [DD_IIM];
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [_meta].[TBDD_CFG_SYSTEM_INFO_IO_INS]
|
||||||
|
ON [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
INSTEAD OF INSERT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
IF TRY_CAST(SESSION_CONTEXT(N'_meta_allow_tbdd_system_info_dml') AS bit) = 1
|
||||||
|
BEGIN
|
||||||
|
IF TRY_CAST(SESSION_CONTEXT(N'_meta_tbdd_system_info_use_input_pk') AS bit) = 1
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
(
|
||||||
|
[PK_CFG_SYSTEM_INFO_ID],
|
||||||
|
[SYSTEM_VERSION],
|
||||||
|
[COMMENT],
|
||||||
|
[CREATED_WHO],
|
||||||
|
[CREATED_WHEN],
|
||||||
|
[CHANGED_WHO],
|
||||||
|
[CHANGED_WHEN]
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
i.[PK_CFG_SYSTEM_INFO_ID],
|
||||||
|
i.[SYSTEM_VERSION],
|
||||||
|
i.[COMMENT],
|
||||||
|
i.[CREATED_WHO],
|
||||||
|
i.[CREATED_WHEN],
|
||||||
|
i.[CHANGED_WHO],
|
||||||
|
i.[CHANGED_WHEN]
|
||||||
|
FROM inserted i;
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
(
|
||||||
|
[SYSTEM_VERSION],
|
||||||
|
[COMMENT],
|
||||||
|
[CREATED_WHO],
|
||||||
|
[CREATED_WHEN],
|
||||||
|
[CHANGED_WHO],
|
||||||
|
[CHANGED_WHEN]
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
i.[SYSTEM_VERSION],
|
||||||
|
i.[COMMENT],
|
||||||
|
i.[CREATED_WHO],
|
||||||
|
i.[CREATED_WHEN],
|
||||||
|
i.[CHANGED_WHO],
|
||||||
|
i.[CHANGED_WHEN]
|
||||||
|
FROM inserted i;
|
||||||
|
END;
|
||||||
|
|
||||||
|
RETURN;
|
||||||
|
END;
|
||||||
|
|
||||||
|
THROW 51001, 'Direktes INSERT auf [_meta].[TBDD_CFG_SYSTEM_INFO] ist nicht erlaubt. Bitte Prozedur [_meta].[PRDD_UPSERT_SYSTEM_INFO] verwenden.', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [_meta].[TBDD_CFG_SYSTEM_INFO_IO_UPD]
|
||||||
|
ON [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
INSTEAD OF UPDATE
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
IF TRY_CAST(SESSION_CONTEXT(N'_meta_allow_tbdd_system_info_dml') AS bit) = 1
|
||||||
|
BEGIN
|
||||||
|
UPDATE t
|
||||||
|
SET t.[SYSTEM_VERSION] = i.[SYSTEM_VERSION],
|
||||||
|
t.[COMMENT] = i.[COMMENT],
|
||||||
|
t.[CREATED_WHO] = i.[CREATED_WHO],
|
||||||
|
t.[CREATED_WHEN] = i.[CREATED_WHEN],
|
||||||
|
t.[CHANGED_WHO] = i.[CHANGED_WHO],
|
||||||
|
t.[CHANGED_WHEN] = i.[CHANGED_WHEN]
|
||||||
|
FROM [_meta].[TBDD_CFG_SYSTEM_INFO] t
|
||||||
|
JOIN inserted i
|
||||||
|
ON i.[PK_CFG_SYSTEM_INFO_ID] = t.[PK_CFG_SYSTEM_INFO_ID];
|
||||||
|
|
||||||
|
RETURN;
|
||||||
|
END;
|
||||||
|
|
||||||
|
THROW 51002, 'Direktes UPDATE auf [_meta].[TBDD_CFG_SYSTEM_INFO] ist nicht erlaubt. Bitte Prozedur [_meta].[PRDD_UPSERT_SYSTEM_INFO] verwenden.', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER TRIGGER [_meta].[TBDD_CFG_SYSTEM_INFO_IO_DEL]
|
||||||
|
ON [_meta].[TBDD_CFG_SYSTEM_INFO]
|
||||||
|
INSTEAD OF DELETE
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
IF TRY_CAST(SESSION_CONTEXT(N'_meta_allow_tbdd_system_info_dml') AS bit) = 1
|
||||||
|
BEGIN
|
||||||
|
DELETE t
|
||||||
|
FROM [_meta].[TBDD_CFG_SYSTEM_INFO] t
|
||||||
|
JOIN deleted d
|
||||||
|
ON d.[PK_CFG_SYSTEM_INFO_ID] = t.[PK_CFG_SYSTEM_INFO_ID];
|
||||||
|
|
||||||
|
RETURN;
|
||||||
|
END;
|
||||||
|
|
||||||
|
THROW 51003, 'Direktes DELETE auf [_meta].[TBDD_CFG_SYSTEM_INFO] ist nicht erlaubt. Bitte Prozedur [_meta].[PRDD_DELETE_SYSTEM_INFO] verwenden.', 1;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,169 @@
|
|||||||
|
USE [DD_ECM_REF]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- PRMOT_MON_GET_TREEVIEW_RESULTS (Value: STRING)
|
||||||
|
-- =================================================================
|
||||||
|
-- Haupteinstiegspunkt in die Monitor-Suche
|
||||||
|
--
|
||||||
|
-- Returns: Tabelle
|
||||||
|
-- =================================================================
|
||||||
|
-- Copyright (c) 2026 by Digital Data GmbH
|
||||||
|
--
|
||||||
|
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||||
|
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||||
|
-- =================================================================
|
||||||
|
-- History:
|
||||||
|
-- 10.03.2026 / MP - Prozedur erstellt.
|
||||||
|
-- 13.03.2026 / MP - Prozedur für MOT-Tabellen angepasst
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [dbo].[PRMOT_MON_GET_TREEVIEW_RESULTS]
|
||||||
|
@SEARCH_VALUE NVARCHAR(100), -- Belegnummer. Muss länger als n Zeichen sein
|
||||||
|
@USR_ID INTEGER -- UserID aus Monitor
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
-- Optimierungen
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
SET ARITHABORT ON;
|
||||||
|
|
||||||
|
DECLARE @MIN_SEARCH_LEN INT, @BATCH_SIZE INT;
|
||||||
|
SET @MIN_SEARCH_LEN = 5; -- Mindestlänge der Belegnummer
|
||||||
|
SET @BATCH_SIZE = 10; -- Max. Belege, für die Daten gesucht werden.
|
||||||
|
|
||||||
|
DECLARE @ID INTEGER, @PID INTEGER, @PID_OFFSET INTEGER, @EMAILMSGID VARCHAR(200), @GLOB_COUNTER INTEGER,
|
||||||
|
@ERG_COUNTER INTEGER, @STRING VARCHAR(50), @ADDED_WHEN DATETIME, @EXPANDED_SWITCH SMALLINT;
|
||||||
|
|
||||||
|
DECLARE @tt1 TABLE (GUID INT); -- temp Tabelle für GUIDs
|
||||||
|
|
||||||
|
SET @ID = 0;
|
||||||
|
SET @PID = 1;
|
||||||
|
SET @PID_OFFSET = 0;
|
||||||
|
SET @EXPANDED_SWITCH = 1;
|
||||||
|
|
||||||
|
-- ### CLEAR former Results ##
|
||||||
|
DELETE FROM [DD_ECM_REF].dbo.MOTB_MON_TREEVIEW_RESULTS WITH (SNAPSHOT) WHERE USR_ID = @USR_ID;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Such-Parameter bearbeiten
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IF LEN(@SEARCH_VALUE) < @MIN_SEARCH_LEN
|
||||||
|
BEGIN
|
||||||
|
EXEC [DD_ECM_REF].dbo.PRMOT_MON_TREEVIEW_ADD_ROW @USR_ID, NULL, 1, 0, NULL, NULL, 'Belegnummer zu kurz!', NULL, NULL, 0;
|
||||||
|
SELECT * FROM [DD_ECM_REF].dbo.MOTB_MON_TREEVIEW_RESULTS WITH (SNAPSHOT) WHERE USR_ID = @USR_ID ORDER BY GUID;
|
||||||
|
RETURN;
|
||||||
|
END
|
||||||
|
|
||||||
|
---- führende 00er entfernen
|
||||||
|
DECLARE @SEARCH_VALUE2 VARCHAR(50);
|
||||||
|
SELECT @SEARCH_VALUE2 = SUBSTRING(Spalte, PATINDEX('%[^0]%', Spalte + ' '), LEN(Spalte))
|
||||||
|
FROM (SELECT @SEARCH_VALUE AS Spalte) AS t;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Such-Menge (MessageIDs) eingrenzen
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
DECLARE @tbl TABLE (EMAILMSGID VARCHAR(200));
|
||||||
|
DELETE FROM @tbl;
|
||||||
|
|
||||||
|
---- XML-Daten zuerst
|
||||||
|
INSERT INTO @tbl
|
||||||
|
SELECT DISTINCT REFERENCE_GUID
|
||||||
|
FROM DD_ECM.DBO.TBEDMI_ITEM_VALUE WITH (NOLOCK)
|
||||||
|
WHERE SPEC_NAME = 'INVOICE_NUMBER' AND ITEM_VALUE = @SEARCH_VALUE;
|
||||||
|
|
||||||
|
---- sonstige E-Mail-Eingänge, der letzten 6 Monate, ohne führende 00er
|
||||||
|
INSERT INTO @tbl
|
||||||
|
SELECT EMAIL_MSGID
|
||||||
|
FROM DD_ECM.dbo.TBEMLP_HISTORY WITH (NOLOCK)
|
||||||
|
WHERE EMAIL_SUBJECT LIKE '%' + TRIM(@SEARCH_VALUE2) + '%'
|
||||||
|
AND datediff(month, EMAIL_DATE, getdate()) <= 6
|
||||||
|
AND EMAIL_FROM <> 'donotreply@wisag.de'
|
||||||
|
AND EMAIL_MSGID NOT IN (SELECT EMAILMSGID from @tbl);
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
-- CURSOR über gefundene MessageIDs
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SELECT @GLOB_COUNTER = count(*) FROM @tbl;
|
||||||
|
IF @GLOB_COUNTER >= 1
|
||||||
|
BEGIN
|
||||||
|
SET @ERG_COUNTER = @GLOB_COUNTER
|
||||||
|
|
||||||
|
DECLARE main_msgid_cursor CURSOR LOCAL FAST_FORWARD FOR
|
||||||
|
|
||||||
|
SELECT TOP (@BATCH_SIZE) EMAILMSGID FROM @tbl;
|
||||||
|
|
||||||
|
OPEN main_msgid_cursor;
|
||||||
|
FETCH NEXT FROM main_msgid_cursor INTO @EMAILMSGID;
|
||||||
|
WHILE @@FETCH_STATUS = 0
|
||||||
|
BEGIN
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 3'
|
||||||
|
|
||||||
|
-- ## Ermittele die Start ID ##
|
||||||
|
SET @ID = (SELECT coalesce(max(GUID),0) FROM [DD_ECM_REF].dbo.MOTB_MON_TREEVIEW_RESULTS WITH (SNAPSHOT) WHERE USR_ID = @USR_ID);
|
||||||
|
|
||||||
|
-- ## Ermittele die Start PID ##
|
||||||
|
IF @GLOB_COUNTER = 1
|
||||||
|
SET @PID = 0;
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
SET @ID +=1;
|
||||||
|
SET @STRING = 'Ergebnis '+ CONVERT(varchar, @ERG_COUNTER);
|
||||||
|
|
||||||
|
IF @GLOB_COUNTER = @ERG_COUNTER
|
||||||
|
SET @EXPANDED_SWITCH = 1;
|
||||||
|
ELSE
|
||||||
|
SET @EXPANDED_SWITCH = 0;
|
||||||
|
|
||||||
|
SELECT @ADDED_WHEN = MIN(CREATEDWHEN) FROM DD_ECM.dbo.TBEDMI_ITEM_VALUE WHERE REFERENCE_GUID = @EMAILMSGID;
|
||||||
|
|
||||||
|
EXEC [DD_ECM_REF].dbo.PRMOT_MON_TREEVIEW_ADD_ROW @USR_ID, NULL, @ID, 0, @ADDED_WHEN, @STRING, NULL, NULL, NULL, @EXPANDED_SWITCH;
|
||||||
|
SET @ERG_COUNTER -= 1;
|
||||||
|
SET @PID = @ID;
|
||||||
|
END
|
||||||
|
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 4'
|
||||||
|
EXEC [DD_ECM_REF].dbo.[PRMOT_MON_GET_TREEVIEW_RESULTS_PER_MESSAGEID] @EMAILMSGID, @USR_ID, @ID, @PID;
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 5'
|
||||||
|
|
||||||
|
FETCH NEXT FROM main_msgid_cursor INTO @EMAILMSGID
|
||||||
|
END
|
||||||
|
CLOSE main_msgid_cursor
|
||||||
|
DEALLOCATE main_msgid_cursor
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
-- DIESE ABFRAGE IST TEUER!!!!
|
||||||
|
|
||||||
|
--PRINT 'SEARCH @EMAILMSGID IN TBEMLP_EMAIL_OUT'
|
||||||
|
DECLARE @E_SUBJ VARCHAR(256)
|
||||||
|
SET @E_SUBJ = '% '+ @SEARCH_VALUE2 +' %';
|
||||||
|
SELECT @EMAILMSGID = REFERENCE_STRING FROM DD_ECM.dbo.TBEMLP_EMAIL_OUT WHERE EMAIL_SUBJ like @E_SUBJ;
|
||||||
|
|
||||||
|
IF LEN(@EMAILMSGID) = 0 OR @EMAILMSGID IS NULL
|
||||||
|
BEGIN
|
||||||
|
-- Ohne EMail-MessageID werden keine weiteren DAten gefunden
|
||||||
|
--PRINT 'NO @EMAILMSGID FOUND'
|
||||||
|
EXEC [DD_ECM_REF].dbo.PRMOT_MON_TREEVIEW_ADD_ROW @USR_ID,NULL,@ID,@PID,NULL,'Fehlende Belegdaten ','Es wurden keine Belegdaten gefunden!','HIGHLIGHT';
|
||||||
|
RETURN
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 6'
|
||||||
|
EXEC [DD_ECM_REF].[dbo].[PRMOT_MON_GET_TREEVIEW_RESULTS_PER_MESSAGEID] @EMAILMSGID, @USR_ID, 0, 0;
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 7'
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 8'
|
||||||
|
-- ### LAST STEP - Get all results ###
|
||||||
|
SELECT * FROM [DD_ECM_REF].dbo.MOTB_MON_TREEVIEW_RESULTS WITH (SNAPSHOT) WHERE USR_ID = @USR_ID ORDER BY GUID;
|
||||||
|
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
USE [DD_ECM_REF]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- PRMOT_MON_GET_TREEVIEW_RESULTS (Value: STRING)
|
||||||
|
-- =================================================================
|
||||||
|
-- Haupteinstiegspunkt in die Monitor-Suche
|
||||||
|
--
|
||||||
|
-- Returns: Tabelle
|
||||||
|
-- =================================================================
|
||||||
|
-- Copyright (c) 2026 by Digital Data GmbH
|
||||||
|
--
|
||||||
|
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||||
|
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||||
|
-- =================================================================
|
||||||
|
-- History:
|
||||||
|
-- 10.03.2026 / MP - Prozedur erstellt.
|
||||||
|
-- 13.03.2026 / MP - Prozedur für MOT-Tabellen angepasst
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [dbo].[PRMOT_MON_GET_TREEVIEW_RESULTS]
|
||||||
|
@SEARCH_VALUE NVARCHAR(100), -- Belegnummer. Muss länger als n Zeichen sein
|
||||||
|
@USR_ID INTEGER -- UserID aus Monitor
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
-- Optimierungen
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
SET ARITHABORT ON;
|
||||||
|
|
||||||
|
DECLARE @MIN_SEARCH_LEN INT, @BATCH_SIZE INT;
|
||||||
|
SET @MIN_SEARCH_LEN = 5; -- Mindestlänge der Belegnummer
|
||||||
|
SET @BATCH_SIZE = 10; -- Max. Belege, für die Daten gesucht werden.
|
||||||
|
|
||||||
|
DECLARE @ID INTEGER, @PID INTEGER, @PID_OFFSET INTEGER, @EMAILMSGID VARCHAR(200), @GLOB_COUNTER INTEGER,
|
||||||
|
@ERG_COUNTER INTEGER, @STRING VARCHAR(50), @ADDED_WHEN DATETIME, @EXPANDED_SWITCH SMALLINT;
|
||||||
|
|
||||||
|
DECLARE @tt1 TABLE (GUID INT); -- temp Tabelle für GUIDs
|
||||||
|
|
||||||
|
SET @ID = 0;
|
||||||
|
SET @PID = 1;
|
||||||
|
SET @PID_OFFSET = 0;
|
||||||
|
SET @EXPANDED_SWITCH = 1;
|
||||||
|
|
||||||
|
-- ### CLEAR former Results ##
|
||||||
|
DELETE FROM [DD_ECM_REF].dbo.MOTB_MON_TREEVIEW_RESULTS WITH (SNAPSHOT) WHERE USR_ID = @USR_ID;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Such-Parameter bearbeiten
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IF LEN(@SEARCH_VALUE) < @MIN_SEARCH_LEN
|
||||||
|
BEGIN
|
||||||
|
EXEC [DD_ECM_REF].dbo.PRMOT_MON_TREEVIEW_ADD_ROW @USR_ID, NULL, 1, 0, NULL, NULL, 'Belegnummer zu kurz!', NULL, NULL, 0;
|
||||||
|
SELECT * FROM [DD_ECM_REF].dbo.MOTB_MON_TREEVIEW_RESULTS WITH (SNAPSHOT) WHERE USR_ID = @USR_ID ORDER BY GUID;
|
||||||
|
RETURN;
|
||||||
|
END
|
||||||
|
|
||||||
|
---- führende 00er entfernen
|
||||||
|
DECLARE @SEARCH_VALUE2 VARCHAR(50);
|
||||||
|
SELECT @SEARCH_VALUE2 = SUBSTRING(Spalte, PATINDEX('%[^0]%', Spalte + ' '), LEN(Spalte))
|
||||||
|
FROM (SELECT @SEARCH_VALUE AS Spalte) AS t;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Such-Menge (MessageIDs) eingrenzen
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
DECLARE @tbl TABLE (EMAILMSGID VARCHAR(200));
|
||||||
|
DELETE FROM @tbl;
|
||||||
|
|
||||||
|
---- XML-Daten zuerst
|
||||||
|
INSERT INTO @tbl
|
||||||
|
SELECT DISTINCT REFERENCE_GUID
|
||||||
|
FROM DD_ECM.DBO.TBEDMI_ITEM_VALUE WITH (NOLOCK)
|
||||||
|
WHERE SPEC_NAME = 'INVOICE_NUMBER' AND ITEM_VALUE = @SEARCH_VALUE;
|
||||||
|
|
||||||
|
---- sonstige E-Mail-Eingänge, der letzten 6 Monate, ohne führende 00er
|
||||||
|
INSERT INTO @tbl
|
||||||
|
SELECT EMAIL_MSGID
|
||||||
|
FROM DD_ECM.dbo.TBEMLP_HISTORY WITH (NOLOCK)
|
||||||
|
WHERE EMAIL_SUBJECT LIKE '%' + TRIM(@SEARCH_VALUE2) + '%'
|
||||||
|
AND datediff(month, EMAIL_DATE, getdate()) <= 6
|
||||||
|
AND EMAIL_FROM <> 'donotreply@wisag.de'
|
||||||
|
AND EMAIL_MSGID NOT IN (SELECT EMAILMSGID from @tbl);
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
-- CURSOR über gefundene MessageIDs
|
||||||
|
----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SELECT @GLOB_COUNTER = count(*) FROM @tbl;
|
||||||
|
IF @GLOB_COUNTER >= 1
|
||||||
|
BEGIN
|
||||||
|
SET @ERG_COUNTER = @GLOB_COUNTER
|
||||||
|
|
||||||
|
DECLARE main_msgid_cursor CURSOR LOCAL FAST_FORWARD FOR
|
||||||
|
|
||||||
|
SELECT TOP (@BATCH_SIZE) EMAILMSGID FROM @tbl;
|
||||||
|
|
||||||
|
OPEN main_msgid_cursor;
|
||||||
|
FETCH NEXT FROM main_msgid_cursor INTO @EMAILMSGID;
|
||||||
|
WHILE @@FETCH_STATUS = 0
|
||||||
|
BEGIN
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 3'
|
||||||
|
|
||||||
|
-- ## Ermittele die Start ID ##
|
||||||
|
DELETE FROM @tt1;
|
||||||
|
INSERT INTO @tt1
|
||||||
|
SELECT coalesce(max(GUID),0)
|
||||||
|
FROM [DD_ECM_REF].dbo.MOTB_MON_TREEVIEW_RESULTS WITH (SNAPSHOT)
|
||||||
|
WHERE USR_ID = @USR_ID;
|
||||||
|
SELECT @ID = GUID from @tt1;
|
||||||
|
|
||||||
|
-- ## Ermittele die Start PID ##
|
||||||
|
IF @GLOB_COUNTER = 1
|
||||||
|
SET @PID = 0;
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
SET @ID +=1;
|
||||||
|
SET @STRING = 'Ergebnis '+ CONVERT(varchar, @ERG_COUNTER);
|
||||||
|
|
||||||
|
IF @GLOB_COUNTER = @ERG_COUNTER
|
||||||
|
SET @EXPANDED_SWITCH = 1;
|
||||||
|
ELSE
|
||||||
|
SET @EXPANDED_SWITCH = 0;
|
||||||
|
|
||||||
|
SELECT @ADDED_WHEN = MIN(CREATEDWHEN) FROM DD_ECM.dbo.TBEDMI_ITEM_VALUE WHERE REFERENCE_GUID = @EMAILMSGID;
|
||||||
|
|
||||||
|
EXEC [DD_ECM_REF].dbo.PRMOT_MON_TREEVIEW_ADD_ROW @USR_ID, NULL, @ID, 0, @ADDED_WHEN, @STRING, NULL, NULL, NULL, @EXPANDED_SWITCH;
|
||||||
|
SET @ERG_COUNTER -= 1;
|
||||||
|
SET @PID = @ID;
|
||||||
|
END
|
||||||
|
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 4'
|
||||||
|
EXEC [DD_ECM_REF].dbo.[PRMOT_MON_GET_TREEVIEW_RESULTS_PER_MESSAGEID] @EMAILMSGID, @USR_ID, @ID, @PID;
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 5'
|
||||||
|
|
||||||
|
FETCH NEXT FROM main_msgid_cursor INTO @EMAILMSGID
|
||||||
|
END
|
||||||
|
CLOSE main_msgid_cursor
|
||||||
|
DEALLOCATE main_msgid_cursor
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
-- DIESE ABFRAGE IST TEUER!!!!
|
||||||
|
|
||||||
|
--PRINT 'SEARCH @EMAILMSGID IN TBEMLP_EMAIL_OUT'
|
||||||
|
DECLARE @E_SUBJ VARCHAR(256)
|
||||||
|
SET @E_SUBJ = '% '+ @SEARCH_VALUE2 +' %';
|
||||||
|
SELECT @EMAILMSGID = REFERENCE_STRING FROM DD_ECM.dbo.TBEMLP_EMAIL_OUT WHERE EMAIL_SUBJ like @E_SUBJ;
|
||||||
|
|
||||||
|
IF LEN(@EMAILMSGID) = 0 OR @EMAILMSGID IS NULL
|
||||||
|
BEGIN
|
||||||
|
-- Ohne EMail-MessageID werden keine weiteren DAten gefunden
|
||||||
|
--PRINT 'NO @EMAILMSGID FOUND'
|
||||||
|
EXEC [DD_ECM_REF].dbo.PRMOT_MON_TREEVIEW_ADD_ROW @USR_ID,NULL,@ID,@PID,NULL,'Fehlende Belegdaten ','Es wurden keine Belegdaten gefunden!','HIGHLIGHT';
|
||||||
|
RETURN
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 6'
|
||||||
|
EXEC [DD_ECM_REF].[dbo].[PRMOT_MON_GET_TREEVIEW_RESULTS_PER_MESSAGEID] @EMAILMSGID, @USR_ID, 0, 0;
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 7'
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
--PRINT 'PRDD_MONITORING_GET_TREEVIEW_RESULT 8'
|
||||||
|
-- ### LAST STEP - Get all results ###
|
||||||
|
SELECT * FROM [DD_ECM_REF].dbo.MOTB_MON_TREEVIEW_RESULTS WITH (SNAPSHOT) WHERE USR_ID = @USR_ID ORDER BY GUID;
|
||||||
|
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,249 @@
|
|||||||
|
USE [DD_ECM_REF]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- PRMOT_MON_GET_TREEVIEW_RESULTS_SAFE (Value: STRING)
|
||||||
|
-- =================================================================
|
||||||
|
-- Msg 41317-safe Variante:
|
||||||
|
-- - wird in DD_ECM_REF erstellt/ausgefuehrt
|
||||||
|
-- - liest aus DD_ECM (nur READ)
|
||||||
|
-- - nutzt nur lokale Tabellenvariablen fuer Ergebnisaufbau
|
||||||
|
-- - kein Zugriff auf memory-optimized MOTB_MON_TREEVIEW_RESULTS
|
||||||
|
-- =================================================================
|
||||||
|
-- Copyright (c) 2026 by Digital Data GmbH
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [dbo].[PRMOT_MON_GET_TREEVIEW_RESULTS_SAFE]
|
||||||
|
@SEARCH_VALUE NVARCHAR(100),
|
||||||
|
@USR_ID INT
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
SET ARITHABORT ON;
|
||||||
|
|
||||||
|
DECLARE @MIN_SEARCH_LEN INT = 5;
|
||||||
|
DECLARE @BATCH_SIZE INT = 10;
|
||||||
|
|
||||||
|
DECLARE @ID INT = 0;
|
||||||
|
DECLARE @PID INT = 1;
|
||||||
|
DECLARE @EMAILMSGID VARCHAR(200);
|
||||||
|
DECLARE @GLOB_COUNTER INT = 0;
|
||||||
|
DECLARE @ERG_COUNTER INT = 0;
|
||||||
|
DECLARE @STRING VARCHAR(50);
|
||||||
|
DECLARE @ADDED_WHEN DATETIME;
|
||||||
|
DECLARE @EXPANDED_SWITCH SMALLINT = 1;
|
||||||
|
|
||||||
|
IF LEN(ISNULL(@SEARCH_VALUE, N'')) < @MIN_SEARCH_LEN
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
@USR_ID AS USR_ID,
|
||||||
|
CAST(1 AS INT) AS GUID,
|
||||||
|
CAST(0 AS INT) AS PID,
|
||||||
|
CAST(NULL AS DATETIME) AS ADDED_WHEN,
|
||||||
|
CAST('Belegnummer zu kurz!' AS VARCHAR(255)) AS TITLE,
|
||||||
|
CAST(NULL AS VARCHAR(500)) AS DETAILS,
|
||||||
|
CAST(NULL AS VARCHAR(50)) AS STYLE,
|
||||||
|
CAST(0 AS SMALLINT) AS EXPANDED,
|
||||||
|
CAST(NULL AS VARCHAR(200)) AS EMAILMSGID;
|
||||||
|
RETURN;
|
||||||
|
END
|
||||||
|
|
||||||
|
DECLARE @SEARCH_VALUE2 VARCHAR(50);
|
||||||
|
SELECT @SEARCH_VALUE2 = SUBSTRING(Spalte, PATINDEX('%[^0]%', Spalte + ' '), LEN(Spalte))
|
||||||
|
FROM (SELECT CONVERT(VARCHAR(50), @SEARCH_VALUE) AS Spalte) AS t;
|
||||||
|
|
||||||
|
DECLARE @tbl TABLE
|
||||||
|
(
|
||||||
|
EMAILMSGID VARCHAR(200) NOT NULL PRIMARY KEY
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO @tbl (EMAILMSGID)
|
||||||
|
SELECT DISTINCT REFERENCE_GUID
|
||||||
|
FROM DD_ECM.dbo.TBEDMI_ITEM_VALUE WITH (NOLOCK)
|
||||||
|
WHERE SPEC_NAME = 'INVOICE_NUMBER'
|
||||||
|
AND ITEM_VALUE = @SEARCH_VALUE;
|
||||||
|
|
||||||
|
INSERT INTO @tbl (EMAILMSGID)
|
||||||
|
SELECT DISTINCT h.EMAIL_MSGID
|
||||||
|
FROM DD_ECM.dbo.TBEMLP_HISTORY AS h WITH (NOLOCK)
|
||||||
|
WHERE h.EMAIL_SUBJECT LIKE '%' + TRIM(@SEARCH_VALUE2) + '%'
|
||||||
|
AND DATEDIFF(MONTH, h.EMAIL_DATE, GETDATE()) <= 6
|
||||||
|
AND h.EMAIL_FROM <> 'donotreply@wisag.de'
|
||||||
|
AND NOT EXISTS
|
||||||
|
(
|
||||||
|
SELECT 1
|
||||||
|
FROM @tbl AS t
|
||||||
|
WHERE t.EMAILMSGID = h.EMAIL_MSGID
|
||||||
|
);
|
||||||
|
|
||||||
|
DECLARE @results TABLE
|
||||||
|
(
|
||||||
|
USR_ID INT NOT NULL,
|
||||||
|
GUID INT NOT NULL,
|
||||||
|
PID INT NOT NULL,
|
||||||
|
ADDED_WHEN DATETIME NULL,
|
||||||
|
TITLE VARCHAR(255) NULL,
|
||||||
|
DETAILS VARCHAR(500) NULL,
|
||||||
|
STYLE VARCHAR(50) NULL,
|
||||||
|
EXPANDED SMALLINT NOT NULL,
|
||||||
|
EMAILMSGID VARCHAR(200) NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
SELECT @GLOB_COUNTER = COUNT(*) FROM @tbl;
|
||||||
|
|
||||||
|
IF @GLOB_COUNTER >= 1
|
||||||
|
BEGIN
|
||||||
|
SET @ERG_COUNTER = @GLOB_COUNTER;
|
||||||
|
|
||||||
|
DECLARE main_msgid_cursor CURSOR LOCAL FAST_FORWARD FOR
|
||||||
|
SELECT TOP (@BATCH_SIZE) EMAILMSGID
|
||||||
|
FROM @tbl
|
||||||
|
ORDER BY EMAILMSGID;
|
||||||
|
|
||||||
|
OPEN main_msgid_cursor;
|
||||||
|
FETCH NEXT FROM main_msgid_cursor INTO @EMAILMSGID;
|
||||||
|
|
||||||
|
WHILE @@FETCH_STATUS = 0
|
||||||
|
BEGIN
|
||||||
|
SET @ID += 1;
|
||||||
|
|
||||||
|
IF @GLOB_COUNTER = 1
|
||||||
|
BEGIN
|
||||||
|
SET @PID = 0;
|
||||||
|
SET @STRING = 'Ergebnis 1';
|
||||||
|
SET @EXPANDED_SWITCH = 1;
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
SET @PID = @ID;
|
||||||
|
SET @STRING = 'Ergebnis ' + CONVERT(VARCHAR(10), @ERG_COUNTER);
|
||||||
|
|
||||||
|
IF @GLOB_COUNTER = @ERG_COUNTER
|
||||||
|
SET @EXPANDED_SWITCH = 1;
|
||||||
|
ELSE
|
||||||
|
SET @EXPANDED_SWITCH = 0;
|
||||||
|
END
|
||||||
|
|
||||||
|
SELECT @ADDED_WHEN = MIN(CREATEDWHEN)
|
||||||
|
FROM DD_ECM.dbo.TBEDMI_ITEM_VALUE WITH (NOLOCK)
|
||||||
|
WHERE REFERENCE_GUID = @EMAILMSGID;
|
||||||
|
|
||||||
|
INSERT INTO @results
|
||||||
|
(
|
||||||
|
USR_ID,
|
||||||
|
GUID,
|
||||||
|
PID,
|
||||||
|
ADDED_WHEN,
|
||||||
|
TITLE,
|
||||||
|
DETAILS,
|
||||||
|
STYLE,
|
||||||
|
EXPANDED,
|
||||||
|
EMAILMSGID
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@USR_ID,
|
||||||
|
@ID,
|
||||||
|
@PID,
|
||||||
|
@ADDED_WHEN,
|
||||||
|
@STRING,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
@EXPANDED_SWITCH,
|
||||||
|
@EMAILMSGID
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @ERG_COUNTER -= 1;
|
||||||
|
FETCH NEXT FROM main_msgid_cursor INTO @EMAILMSGID;
|
||||||
|
END
|
||||||
|
|
||||||
|
CLOSE main_msgid_cursor;
|
||||||
|
DEALLOCATE main_msgid_cursor;
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
DECLARE @E_SUBJ VARCHAR(256);
|
||||||
|
SET @E_SUBJ = '% ' + @SEARCH_VALUE2 + ' %';
|
||||||
|
|
||||||
|
SELECT TOP (1) @EMAILMSGID = REFERENCE_STRING
|
||||||
|
FROM DD_ECM.dbo.TBEMLP_EMAIL_OUT WITH (NOLOCK)
|
||||||
|
WHERE EMAIL_SUBJ LIKE @E_SUBJ
|
||||||
|
ORDER BY REFERENCE_STRING;
|
||||||
|
|
||||||
|
IF @EMAILMSGID IS NULL OR LEN(@EMAILMSGID) = 0
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO @results
|
||||||
|
(
|
||||||
|
USR_ID,
|
||||||
|
GUID,
|
||||||
|
PID,
|
||||||
|
ADDED_WHEN,
|
||||||
|
TITLE,
|
||||||
|
DETAILS,
|
||||||
|
STYLE,
|
||||||
|
EXPANDED,
|
||||||
|
EMAILMSGID
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@USR_ID,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
'Fehlende Belegdaten',
|
||||||
|
'Es wurden keine Belegdaten gefunden!',
|
||||||
|
'HIGHLIGHT',
|
||||||
|
0,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
SELECT @ADDED_WHEN = MIN(CREATEDWHEN)
|
||||||
|
FROM DD_ECM.dbo.TBEDMI_ITEM_VALUE WITH (NOLOCK)
|
||||||
|
WHERE REFERENCE_GUID = @EMAILMSGID;
|
||||||
|
|
||||||
|
INSERT INTO @results
|
||||||
|
(
|
||||||
|
USR_ID,
|
||||||
|
GUID,
|
||||||
|
PID,
|
||||||
|
ADDED_WHEN,
|
||||||
|
TITLE,
|
||||||
|
DETAILS,
|
||||||
|
STYLE,
|
||||||
|
EXPANDED,
|
||||||
|
EMAILMSGID
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@USR_ID,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
@ADDED_WHEN,
|
||||||
|
'Ergebnis 1',
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
1,
|
||||||
|
@EMAILMSGID
|
||||||
|
);
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
USR_ID,
|
||||||
|
GUID,
|
||||||
|
PID,
|
||||||
|
ADDED_WHEN,
|
||||||
|
TITLE,
|
||||||
|
DETAILS,
|
||||||
|
STYLE,
|
||||||
|
EXPANDED,
|
||||||
|
EMAILMSGID
|
||||||
|
FROM @results
|
||||||
|
ORDER BY GUID;
|
||||||
|
END
|
||||||
|
GO
|
||||||
39
dev/[DD_ECM_REF]-Database/plan.md
Normal file
39
dev/[DD_ECM_REF]-Database/plan.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
## Plan: Neue transaktionssichere Treeview-Prozedur
|
||||||
|
|
||||||
|
Die neue Prozedur wird in DD_ECM_REF erstellt und ausgeführt, liest zuerst aus DD_ECM, verarbeitet die Daten vollständig lokal in temporären/klassischen Tabellen und vermeidet jede Schreiboperation auf memory-optimized Tabellen innerhalb desselben Aufrufs. Dadurch bleibt sie auch bei offener äußerer User-Transaktion lauffähig und umgeht Msg 41317. Die Ausgabe erfolgt als Resultset direkt aus lokaler Arbeitsmenge statt aus MOTB_MON_TREEVIEW_RESULTS.
|
||||||
|
|
||||||
|
**Steps**
|
||||||
|
1. Phase 1: Ist-Logik in DD_ECM_READ-Teil und REF_WRITE-Teil zerlegen, inklusive aller Stellen mit Cross-DB-Read und MOT-Zugriff. Grundlage sind die Zugriffe in [PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql.
|
||||||
|
2. Phase 1: Neue Zielprozedur in DD_ECM_REF entwerfen, die Eingaben SEARCH_VALUE und USR_ID beibehält und die Ergebnisstruktur zur bisherigen Ausgabe kompatibel liefert. Diese Prozedur verwendet nur lokale #Temp-Tabellen für den Aufbau der Baumdaten.
|
||||||
|
3. Phase 2: Cross-DB-Vorstufe implementieren: DD_ECM-Reads ausschließlich in lokale #Temp-Tabellen laden (MessageIDs, AddedWhen und ggf. weitere Felder), bevor irgendeine weitere Verarbeitung stattfindet. Diese Phase ist nur lesend gegenüber DD_ECM.
|
||||||
|
4. Phase 2: Bestehende Cursor-/Loop-Logik auf lokale #Temp-Tabellen umstellen; Aufrufe von PRMOT_MON_TREEVIEW_ADD_ROW durch direkte Inserts in lokale Ergebnistabelle ersetzen. Abhängigkeit: Schritt 3.
|
||||||
|
5. Phase 2: Aufruf von PRMOT_MON_GET_TREEVIEW_RESULTS_PER_MESSAGEID entkoppeln. Falls diese Prozedur auf MOT schreibt, wird eine neue lokale Hilfsvariante erstellt, die nur in #Temp-Ergebnistabellen schreibt. Abhängigkeit: Schritt 4.
|
||||||
|
6. Phase 3: Finale Ausgabe ausschließlich per SELECT aus lokaler Ergebnistabelle zurückgeben, sortiert wie bisher nach GUID. Kein Zugriff auf MOTB_MON_TREEVIEW_RESULTS in der neuen Prozedur.
|
||||||
|
7. Phase 3: Vorhandene Prozedur unverändert lassen und neue Prozedur mit neuem Namen bereitstellen (zuerst Parallelbetrieb), damit Rückfallpfad vorhanden bleibt.
|
||||||
|
|
||||||
|
**Relevant files**
|
||||||
|
- [PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql([PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql) — Referenz für bestehende Suchlogik, Cursorfluss und Ausgabeverhalten.
|
||||||
|
- [PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql([PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql#L48) — aktueller MOT-DELETE-Zugriff, in neuer Prozedur zu vermeiden.
|
||||||
|
- [PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql([PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql#L70) — DD_ECM-Read INVOICE_NUMBER.
|
||||||
|
- [PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql([PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql#L74) — DD_ECM-Read HISTORY.
|
||||||
|
- [PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql([PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql#L125) — DD_ECM-Read CREATEDWHEN.
|
||||||
|
- [PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql([PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql#L135) — Abhängigkeit zu PER_MESSAGEID.
|
||||||
|
- [PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql([PRMOT_MON_GET_TREEVIEW_RESULTS]_ok.sql#L173) — bisherige Endausgabe aus MOT-Tabelle.
|
||||||
|
|
||||||
|
**Verification**
|
||||||
|
1. Technischer Negativtest: Ausführung der neuen Prozedur innerhalb BEGIN TRAN/COMMIT bei offenem Transaktionskontext; erwartetes Ergebnis: kein Msg 41317.
|
||||||
|
2. Funktionaler Vergleichstest: identische Suchwerte mit alter und neuer Prozedur ausführen, Ergebnisanzahl und Sortierung vergleichen (mindestens 10 reale Belegnummern).
|
||||||
|
3. Randfalltest: Suche mit zu kurzer Belegnummer, keine Treffer, Treffer > BATCH_SIZE, führende Nullen in SEARCH_VALUE.
|
||||||
|
4. Parallelitätstest: gleichzeitige Aufrufe mit unterschiedlichen USR_ID; erwartetes Ergebnis: keine gegenseitige Beeinflussung.
|
||||||
|
5. Performance-Schnelltest: Laufzeitvergleich alt/neu für typische und teure Suchfälle (LIKE mit Wildcards).
|
||||||
|
|
||||||
|
**Decisions**
|
||||||
|
- Muss auch bei offener äußerer User-Transaktion laufen.
|
||||||
|
- Darf weiterhin aus DD_ECM lesen.
|
||||||
|
- Neue Prozedur wird in DD_ECM_REF gespeichert und ausgeführt.
|
||||||
|
- Zur Behebung von Msg 41317 werden MOT-Schreib-/Lesezugriffe in der neuen Prozedur vollständig vermieden.
|
||||||
|
|
||||||
|
**Further Considerations**
|
||||||
|
1. Kompatibilitätsentscheidung: Soll die alte MOTB_MON_TREEVIEW_RESULTS als Persistenzziel künftig entfallen, oder braucht ihr zusätzlich eine optionale Nachschreib-Prozedur außerhalb der offenen Transaktion?
|
||||||
|
2. Abhängigkeitsentscheidung: Falls PER_MESSAGEID zwingend benötigt wird und MOT-Zugriffe enthält, sollte eine zweite, temp-table-basierte Variante mit gleicher Fachlogik erstellt werden.
|
||||||
|
3. Betriebsentscheidung: Für den Produktivschnitt kann ein Feature-Flag sinnvoll sein, um schrittweise von alt auf neu umzuschalten.
|
||||||
@@ -26,7 +26,7 @@ GO
|
|||||||
-- 26.03.2025 / MK - First Version
|
-- 26.03.2025 / MK - First Version
|
||||||
|
|
||||||
CREATE OR ALTER PROCEDURE [dbo].[PRDD_GET_DATABASE_DEADLOCK](
|
CREATE OR ALTER PROCEDURE [dbo].[PRDD_GET_DATABASE_DEADLOCK](
|
||||||
pKILL_DEADLOCK_SESSIONS BIT = NULL
|
@pKILL_DEADLOCK_SESSIONS BIT = NULL
|
||||||
)
|
)
|
||||||
AS
|
AS
|
||||||
BEGIN
|
BEGIN
|
||||||
47
dev/[VWCUST_WINLINE_EMAIL_OUT_DD_CWLDATEN_DDVP].sql
Normal file
47
dev/[VWCUST_WINLINE_EMAIL_OUT_DD_CWLDATEN_DDVP].sql
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
use [DD_ECM]
|
||||||
|
go
|
||||||
|
|
||||||
|
create view [VWCUST_WINLINE_EMAIL_OUT_DD_CWLDATEN_DDVP]
|
||||||
|
as
|
||||||
|
SELECT
|
||||||
|
--[mesokey]
|
||||||
|
--,[c000]
|
||||||
|
--,[c001]
|
||||||
|
--,[c002]
|
||||||
|
--,[c003]
|
||||||
|
--,[c004]
|
||||||
|
--,[c005]
|
||||||
|
--,[c006]
|
||||||
|
--,[c007]
|
||||||
|
--,[c008]
|
||||||
|
--,[c009]
|
||||||
|
'invoice-flow@digitaldata.works' as 'E-Mail-From'
|
||||||
|
,[c010] as 'E-Mail-To'
|
||||||
|
,SUBSTRING(convert(VARCHAR(100),[c010]),(charindex('<',convert(VARCHAR(100),[c010]),0)+1),(charindex('>',convert(VARCHAR(100),[c010]),0)-(charindex('<',convert(VARCHAR(100),[c010]),0)+1))) as 'E-Mail-To_clean'
|
||||||
|
,RTRIM(LTRIM([c016])) as 'E-Mail-Subject'
|
||||||
|
,convert(date,[c012]) as 'E-Mail-Date'
|
||||||
|
--,[c013]
|
||||||
|
--,[c014]
|
||||||
|
--,[c015]
|
||||||
|
--,[c017]
|
||||||
|
--,[c018]
|
||||||
|
--,[c019]
|
||||||
|
--,[c020]
|
||||||
|
--,[c021]
|
||||||
|
--,[c022]
|
||||||
|
--,[c023]
|
||||||
|
--,[c024]
|
||||||
|
--,[c025]
|
||||||
|
--,[c026]
|
||||||
|
--,[c027]
|
||||||
|
--,[c028]
|
||||||
|
--,[c029]
|
||||||
|
--,[c030]
|
||||||
|
--,[c031]
|
||||||
|
--,[c032]
|
||||||
|
--,[c033]
|
||||||
|
--,[mesobin]
|
||||||
|
--,[mesocomp]
|
||||||
|
--,[mesoyear]
|
||||||
|
--,[ts]
|
||||||
|
FROM [DD_CWLDATEN_DDVP].[dbo].[T190]
|
||||||
Reference in New Issue
Block a user