4863 lines
230 KiB
Transact-SQL
4863 lines
230 KiB
Transact-SQL
--##################################
|
||
--1. Define Your AdminUsers via replacing YourAdministratorUserName with proper UserNames
|
||
DECLARE @ADMINUSER1 VARCHAR(100),@ADMINUSER2 VARCHAR(100)
|
||
SET @ADMINUSER1 = 'YourAdministratorUserName'
|
||
-- 2. Replace @WINDREAM_DB in code with name of WM-Database
|
||
-- 3. Replace @DIGITALDATA.LOCAL with domainname of customer
|
||
-- 4. Add the ECM-Login Data
|
||
-- Search for @ECM_IP and replace it with IP or Name of MSSQL Server
|
||
-- Search for @ECM_USER and replace it with DB-Username for ECM-DB
|
||
-- Search for @ECM_PW and replace it with PW for ECM-User
|
||
-- 5. Integrieren wir auch unsere IDB-Logik?
|
||
-- Wenn Ja: Suchen nach IDB.dbo und entfernen der Auskommentierung der entspechenden Bereiche
|
||
-- Execute Script and cross fingers :)
|
||
-- ####################################
|
||
CREATE TABLE TBIMPORT_USER (USR_NAME VARCHAR(100));
|
||
INSERT INTO TBIMPORT_USER (USR_NAME) VALUES (@ADMINUSER1);
|
||
CREATE TABLE TBDD_BASECONFIG
|
||
(
|
||
GUID TINYINT,
|
||
WD_UNICODE BIT NOT NULL DEFAULT 1,
|
||
WM_DB_CONSTRING VARCHAR(1000) NOT NULL DEFAULT '',
|
||
WM_DRIVE VARCHAR(1) NOT NULL DEFAULT 'W',
|
||
DB_VERSION VARCHAR(10) NOT NULL DEFAULT '1.0.0.0',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_BASECONFIG_GUID PRIMARY KEY(GUID),
|
||
CONSTRAINT CH_TBDD_BASECONFIG_GUID CHECK(GUID = 1)
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
CREATE TRIGGER TBDD_BASECONFIG_AFT_UPD ON TBDD_BASECONFIG
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_BASECONFIG SET CHANGED_WHEN = GETDATE() FROM INSERTED
|
||
WHERE TBDD_BASECONFIG.GUID = INSERTED.GUID
|
||
GO
|
||
INSERT INTO TBDD_BASECONFIG (GUID,WD_UNICODE,DB_VERSION) VALUES (1,1,'1.9.7.9')
|
||
GO
|
||
CREATE TABLE [dbo].[TBDD_3RD_PARTY_MODULES](
|
||
[GUID] [int] IDENTITY(1,1) NOT NULL,
|
||
[ACTIVE] [bit] NOT NULL,
|
||
[NAME] [varchar](50) NOT NULL,
|
||
[DESCRIPTION] [varchar](500) NULL,
|
||
[LICENSE] [varchar](max) NOT NULL,
|
||
[VERSION] [varchar](20) NOT NULL,
|
||
[STRING1] [varchar](100) NULL,
|
||
[STRING2] [varchar](100) NULL,
|
||
[STRING3] [varchar](100) NULL,
|
||
[STRING4] [varchar](100) NULL,
|
||
[STRING5] [varchar](100) NULL,
|
||
[STRING6] [varchar](100) NULL,
|
||
[STRING7] [varchar](100) NULL,
|
||
[STRING8] [varchar](100) NULL,
|
||
[STRING9] [varchar](100) NULL,
|
||
[STRING10] [varchar](100) NULL,
|
||
[ADDED_WHO] [varchar](50) NULL,
|
||
[ADDED_WHEN] [datetime] NULL,
|
||
[CHANGED_WHO] [varchar](50) NULL,
|
||
[CHANGED_WHEN] [datetime] NULL
|
||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||
GO
|
||
|
||
ALTER TABLE [dbo].[TBDD_3RD_PARTY_MODULES] ADD CONSTRAINT [DF_TBDD_3RD_PARTY_MODULES_ACTIVE] DEFAULT ((0)) FOR [ACTIVE]
|
||
GO
|
||
|
||
ALTER TABLE [dbo].[TBDD_3RD_PARTY_MODULES] ADD CONSTRAINT [DF_TBDD_3RD_PARTY_MODULES_VERSION] DEFAULT ('1.0.0.0') FOR [VERSION]
|
||
GO
|
||
INSERT INTO TBDD_3RD_PARTY_MODULES (ACTIVE,NAME,LICENSE) VALUES (1,'GDPICTURE','21182889975216572111813147150675976632')
|
||
GO
|
||
|
||
|
||
|
||
CREATE TABLE TBDD_SERV_EXT_PROGRAMS
|
||
(
|
||
GUID TINYINT,
|
||
PDFTK_LOCATION VARCHAR(500) DEFAULT '',
|
||
PDFXCHANGE_LOCATION VARCHAR(500) DEFAULT '',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_SERV_EXT_PROGRAMS_GUID PRIMARY KEY(GUID),
|
||
CONSTRAINT CH_TBDD_SERV_EXT_PROGRAMS_GUID CHECK(GUID = 1)
|
||
)
|
||
GO
|
||
CREATE TABLE TBDD_EINGANGSARTEN
|
||
(
|
||
GUID TINYINT IDENTITY(1,1),
|
||
BEZEICHNUNG VARCHAR(100) NOT NULL,
|
||
BESCHREIBUNG VARCHAR(500),
|
||
ERSTELLTWER VARCHAR(50) DEFAULT 'DD_ECM DEFAULT' NOT NULL,
|
||
ERSTELLTWANN DATETIME DEFAULT GETDATE(),
|
||
GEANDERTWER VARCHAR(50),
|
||
GEAENDERTWANN DATETIME,
|
||
CONSTRAINT PK_TBDD_EINGANGSARTEN PRIMARY KEY (GUID),
|
||
CONSTRAINT UNIQUE_TBDD_EINGANGSARTEN UNIQUE(BEZEICHNUNG)
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
|
||
CREATE TRIGGER TBDD_EINGANGSARTEN_AFT_UPD ON TBDD_EINGANGSARTEN
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_EINGANGSARTEN SET GEAENDERTWANN = GETDATE() FROM INSERTED WHERE TBDD_EINGANGSARTEN.GUID = INSERTED.GUID
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
|
||
INSERT INTO TBDD_EINGANGSARTEN(BEZEICHNUNG,BESCHREIBUNG) VALUES('manueller Scan','Dokumentarten die manuell gescannt werden')
|
||
GO
|
||
INSERT INTO TBDD_EINGANGSARTEN(BEZEICHNUNG,BESCHREIBUNG) VALUES('aus Anwendung','Dokumentarten die <20>ber Simple-Print abgelegt werden')
|
||
GO
|
||
INSERT INTO TBDD_EINGANGSARTEN(BEZEICHNUNG,BESCHREIBUNG) VALUES('manuelle Ablage','alle Dokumentarten die manuell abgelegt werden')
|
||
GO
|
||
|
||
CREATE TABLE TBDD_MODULES
|
||
(
|
||
GUID INTEGER NOT NULL IDENTITY(1,1),
|
||
NAME VARCHAR(50),
|
||
SHORT_NAME VARCHAR(20),
|
||
LICENSE VARCHAR(2000) NOT NULL DEFAULT '',
|
||
PRODUCT_VERSION VARCHAR(20) NOT NULL DEFAULT '1.0.0.0',
|
||
DB_VERSION VARCHAR(20) NOT NULL DEFAULT '1.0.0.0',
|
||
ACTIVE BIT NOT NULL DEFAULT 0,
|
||
VERSION_DELIMITER VARCHAR(1) NOT NULL DEFAULT '~',
|
||
FILE_DELIMITER VARCHAR(1) NOT NULL DEFAULT '_',
|
||
BIT1 BIT NOT NULL DEFAULT 0,
|
||
BIT2 BIT NOT NULL DEFAULT 0,
|
||
STRING1 VARCHAR(50),
|
||
STRING2 VARCHAR(50),
|
||
BACKGROUND_IMAGE VARBINARY(MAX),
|
||
PRODUCT_NAME1 VARCHAR(200) NOT NULL DEFAULT '',
|
||
PRODUCT_NAME2 VARCHAR(200),
|
||
VERSION_UPATE_PATH VARCHAR(500) NOT NULL DEFAULT '',
|
||
AUTO_LOGOUT_USER INTEGER NOT NULL DEFAULT 0,
|
||
WMSESSION_STARTSTOP_STARTUP BIT NOT NULL DEFAULT 0,
|
||
MIN_REQUIRED_VERSION VARCHAR(10) NOT NULL DEFAULT '1.0.0.0',
|
||
LICENSE_VALID BIT NOT NULL DEFAULT 1,
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_MODULE PRIMARY KEY (GUID),
|
||
CONSTRAINT UQ_TBDD_MODULE UNIQUE(NAME)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_MODULE_AFT_UPD ON TBDD_MODULES
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_MODULES SET CHANGED_WHEN = GETDATE() FROM INSERTED
|
||
WHERE TBDD_MODULES.GUID = INSERTED.GUID
|
||
GO
|
||
|
||
INSERT INTO TBDD_MODULES(NAME,SHORT_NAME,LICENSE,STRING1,ACTIVE) VALUES
|
||
('Record-Organizer','ADDI','a0c+ADsUcVQiOBrieIt5tEVrgl/P/ns5w9+A/ZdDo8k=','W',1)
|
||
GO
|
||
INSERT INTO TBDD_MODULES(NAME,SHORT_NAME,LICENSE,STRING1,ACTIVE) VALUES
|
||
('fileFLOW','fileFLOW','kc6j9HSv/UJVAzFjMZv2A3wHZFy+2nNLKP9Qs8g9EVY=','W',1)
|
||
GO
|
||
INSERT INTO TBDD_MODULES(NAME,SHORT_NAME,LICENSE,STRING1,DB_VERSION,PRODUCT_VERSION,ACTIVE) VALUES
|
||
('Process-Manager','PM','kc6j9HSv/UJVAzFjMZv2A3wHZFy+2nNLKP9Qs8g9EVY=','W','1.9.4.3','1.9.4.3',1)
|
||
GO
|
||
INSERT INTO TBDD_MODULES(NAME,SHORT_NAME,LICENSE,STRING1,ACTIVE) VALUES
|
||
('User-Manager','UM','kc6j9HSv/UJVAzFjMZv2A3wHZFy+2nNLKP9Qs8g9EVY=','W',1)
|
||
GO
|
||
INSERT INTO TBDD_MODULES(NAME,SHORT_NAME,LICENSE,STRING1,ACTIVE) VALUES
|
||
('Clipboard-Watcher','CW','kc6j9HSv/UJVAzFjMZv2A3wHZFy+2nNLKP9Qs8g9EVY=','W',1)
|
||
GO
|
||
INSERT INTO TBDD_MODULES(NAME,SHORT_NAME,LICENSE,STRING1,ACTIVE) VALUES
|
||
('Email-Profiler','EMLP','kc6j9HSv/UJVAzFjMZv2A3wHZFy+2nNLKP9Qs8g9EVY=','W',1)
|
||
GO
|
||
|
||
CREATE TABLE TBDD_USER
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
PRENAME VARCHAR(50),
|
||
NAME VARCHAR(50),
|
||
USERNAME VARCHAR(50) NOT NULL UNIQUE,
|
||
SHORTNAME VARCHAR(30),
|
||
EMAIL VARCHAR(100),
|
||
[LANGUAGE] VARCHAR(5) NOT NULL DEFAULT 'de-DE',
|
||
GENERAL_VIEWER VARCHAR(30) NOT NULL DEFAULT 'NONE',
|
||
COMMENT VARCHAR(500),
|
||
WAN_ENVIRONMENT BIT NOT NULL DEFAULT 0,
|
||
USERID_FK_INT_ECM INTEGER NOT NULL DEFAULT 0,
|
||
ATTR_CHAR1 VARCHAR(250),
|
||
ATTR_CHAR2 VARCHAR(250),
|
||
ATTR_CHAR3 VARCHAR(250),
|
||
ATTR_CHAR4 VARCHAR(250),
|
||
ATTR_CHAR5 VARCHAR(250),
|
||
ATTR_CHAR6 VARCHAR(250),
|
||
ATTR_CHAR7 VARCHAR(250),
|
||
ATTR_CHAR8 VARCHAR(250),
|
||
ATTR_CHAR9 VARCHAR(250),
|
||
ATTR_CHAR10 VARCHAR(250),
|
||
ATTR_CHAR11 VARCHAR(250),
|
||
ATTR_CHAR12 VARCHAR(250),
|
||
ATTR_CHAR13 VARCHAR(250),
|
||
ATTR_CHAR14 VARCHAR(250),
|
||
ATTR_CHAR15 VARCHAR(250),
|
||
ATTR_BIT1 BIT NOT NULL DEFAULT 0,
|
||
ATTR_BIT2 BIT NOT NULL DEFAULT 0,
|
||
ATTR_BIT3 BIT NOT NULL DEFAULT 0,
|
||
ATTR_BIT4 BIT NOT NULL DEFAULT 0,
|
||
ACTIVE BIT NOT NULL DEFAULT 1,
|
||
DELETED BIT NOT NULL DEFAULT 0,
|
||
DELETED_WHEN DATETIME,
|
||
DELETED_WHO DATETIME,
|
||
DATE_FORMAT VARCHAR(10) NOT NULL DEFAULT 'dd.MM.yyyy',
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_USER PRIMARY KEY (GUID)
|
||
)
|
||
GO
|
||
|
||
|
||
INSERT INTO TBDD_USER(PRENAME,NAME,USERNAME)
|
||
SELECT 'Prename','Surname',USR_NAME FROM TBIMPORT_USER;
|
||
GO
|
||
|
||
|
||
CREATE TABLE TBDD_GROUPS
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
NAME VARCHAR(50),
|
||
ECM_FK_ID INTEGER NOT NULL DEFAULT 0,
|
||
AD_SYNC BIT NOT NULL DEFAULT 0,
|
||
INTERNAL BIT NOT NULL DEFAULT 0,
|
||
ACTIVE BIT NOT NULL DEFAULT 1,
|
||
COMMENT VARCHAR(200),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_GROUPS PRIMARY KEY (GUID),
|
||
CONSTRAINT UQ_TBDD_GROUPS UNIQUE(NAME)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_GROUPS_AFT_UPD ON TBDD_GROUPS
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
DECLARE @GRPNAME VARCHAR(50)
|
||
SELECT @GRPNAME = NAME FROM inserted
|
||
IF UPDATE (NAME)
|
||
BEGIN
|
||
DECLARE @ECM_GRP_ID INTEGER
|
||
SELECT @ECM_GRP_ID = [dwGroupID]
|
||
FROM @WINDREAM_DB.[dbo].[GroupInfo] where UPPER(szGroupName) = UPPER(@GRPNAME) AND szNTDomain = '@DIGITALDATA.LOCAL'
|
||
IF @ECM_GRP_ID IS NULL
|
||
SET @ECM_GRP_ID = 0
|
||
UPDATE TBDD_GROUPS SET ECM_FK_ID = @ECM_GRP_ID
|
||
FROM INSERTED
|
||
WHERE TBDD_GROUPS.GUID = INSERTED.GUID
|
||
END
|
||
UPDATE TBDD_GROUPS SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_GROUPS.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('PM_USER',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('PM_ADMINS',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('fileFLOW_USER',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('fileFLOW_ADMINS',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('ADDI_USER',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('ADDI_ADMINS',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('CW_USER',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('CW_ADMINS',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('UM_ADMINS',1)
|
||
GO
|
||
INSERT INTO TBDD_GROUPS (NAME,INTERNAL) VALUES ('SERVER_USER',1)
|
||
GO
|
||
|
||
CREATE TABLE TBDD_GROUPS_MODULES
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
MODULE_ID INT NOT NULL,
|
||
GROUP_ID INT NOT NULL,
|
||
COMMENT VARCHAR(200),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_GROUPS_MODULES PRIMARY KEY (GUID),
|
||
CONSTRAINT UC_MODULE_GROUP UNIQUE (MODULE_ID,GROUP_ID),
|
||
CONSTRAINT FK_TBDD_GROUPS_MODULES_GROUP_ID FOREIGN KEY(GROUP_ID) REFERENCES TBDD_GROUPS(GUID),
|
||
CONSTRAINT FK_TBDD_GROUPS_MODULES_MODULE_ID FOREIGN KEY(MODULE_ID) REFERENCES TBDD_MODULES(GUID),
|
||
)
|
||
GO
|
||
CREATE TABLE dbo.TBDD_USER_REPRESENTATION (
|
||
GUID INTEGER IDENTITY(1,1) NOT NULL,
|
||
USER_ID INTEGER NOT NULL,
|
||
REPR_GROUP INTEGER,
|
||
RIGHT_GROUP INTEGER NOT NULL,
|
||
ADDED_WHO VARCHAR(50) DEFAULT ('DEFAULT') NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT getdate(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
REPR_USER INTEGER,
|
||
CONSTRAINT PK_TBDD_USER_REPRESENTATION PRIMARY KEY (GUID),
|
||
CONSTRAINT UC_TBDD_USER_REPRESENTATION UNIQUE (USER_ID,REPR_GROUP,RIGHT_GROUP),
|
||
CONSTRAINT FK_TBDD_USER_REPRESENTATION_REPR_USER FOREIGN KEY(USER_ID) REFERENCES TBDD_USER(GUID),
|
||
CONSTRAINT FK_TBDD_USER_REPRESENTATION_REPR_GROUP FOREIGN KEY(REPR_GROUP) REFERENCES TBDD_GROUPS(GUID),
|
||
CONSTRAINT FK_TBDD_USER_REPRESENTATION_RIGHT_GROUP FOREIGN KEY(RIGHT_GROUP) REFERENCES TBDD_GROUPS(GUID)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_USER_REPRESENTATION_AFT_UPD ON TBDD_USER_REPRESENTATION
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_USER_REPRESENTATION SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_USER_REPRESENTATION.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_CLIENT
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
CLIENT_NAME VARCHAR(50) NOT NULL UNIQUE,
|
||
SHORTNAME VARCHAR(30),
|
||
LICENSE_PMO VARCHAR(5000) NOT NULL DEFAULT '',
|
||
LICENSE_GI VARCHAR(5000) NOT NULL DEFAULT '',
|
||
LICENSE_PM VARCHAR(5000) NOT NULL DEFAULT '',
|
||
COMMENT VARCHAR(200),
|
||
ACTIVE BIT NOT NULL DEFAULT 0,
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_CLIENT PRIMARY KEY (GUID)
|
||
)
|
||
GO
|
||
INSERT INTO TBDD_CLIENT(CLIENT_NAME,SHORTNAME,ACTIVE) VALUES
|
||
('DEFAULT','DEF',1)
|
||
GO
|
||
|
||
CREATE TRIGGER TBDD_CLIENT_AFT_UPD ON TBDD_CLIENT
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_CLIENT SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_CLIENT.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_GROUPS_CLIENT
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
CLIENT_ID INT NOT NULL,
|
||
GROUP_ID INT NOT NULL,
|
||
COMMENT VARCHAR(200),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_GROUPS_CLIENT PRIMARY KEY (GUID),
|
||
CONSTRAINT UC_CLIENT_GROUP UNIQUE (CLIENT_ID,GROUP_ID),
|
||
CONSTRAINT FK_TBDD_GROUPS_CLIENT_GROUP_ID FOREIGN KEY(GROUP_ID) REFERENCES TBDD_GROUPS(GUID),
|
||
CONSTRAINT FK_TBDD_GROUPS_CLIENT_CLIENT_ID FOREIGN KEY(CLIENT_ID) REFERENCES TBDD_CLIENT(GUID),
|
||
)
|
||
GO
|
||
|
||
|
||
CREATE TABLE TBDD_GROUPS_USER
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
[USER_ID] INT NOT NULL,
|
||
GROUP_ID INT NOT NULL,
|
||
COMMENT VARCHAR(200),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_GROUPS_USER PRIMARY KEY (GUID),
|
||
CONSTRAINT UC_USER_GROUP UNIQUE (USER_ID,GROUP_ID),
|
||
CONSTRAINT FK_TBDD_GROUPS_USER_GROUP_ID FOREIGN KEY(GROUP_ID) REFERENCES TBDD_GROUPS(GUID),
|
||
CONSTRAINT FK_TBDD_GROUPS_USER_USER_ID FOREIGN KEY([USER_ID]) REFERENCES TBDD_USER(GUID),
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_GROUPS_USER_AFT_UPD ON TBDD_GROUPS_USER
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_GROUPS_USER SET CHANGED_WHEN = GETDATE() FROM INSERTED
|
||
WHERE TBDD_GROUPS_USER.GUID = INSERTED.GUID
|
||
GO
|
||
CREATE TRIGGER [dbo].[TBDD_GROUPS_USER_AFT_DEL] ON [dbo].[TBDD_GROUPS_USER]
|
||
FOR DELETE
|
||
AS
|
||
DECLARE @USER_ID INTEGER
|
||
SELECT @USER_ID = deleted.USER_ID FROM deleted
|
||
IF @USER_ID IS NOT NULL
|
||
BEGIN
|
||
if exists (select * from sysobjects where name='TBPMO_USER_RIGHTS_JOBS' and xtype='U')
|
||
INSERT INTO TBPMO_USER_RIGHTS_JOBS (USER_ID,COMMENT,ADDED_WHO) VALUES (@USER_ID,'USER DELETED FROM GROUP','TBDD_GROUPS_USER_AFT_DEL')
|
||
if exists (select * from sysobjects where name='TBPMO_LOG_ESSENTIALS' and xtype='U')
|
||
INSERT INTO TBPMO_LOG_ESSENTIALS (REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES (@USER_ID,'USER-ID','USER DELETED FROM USER-GROUP',(SELECT USERNAME FROM TBDD_USER WHERE GUID = @USER_ID ))
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_FUNCTION_REGEX
|
||
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
FUNCTION_NAME VARCHAR(250) NOT NULL,
|
||
REGEX VARCHAR(MAX) NOT NULL,
|
||
STRING1 VARCHAR(500),
|
||
STRING2 VARCHAR(500),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'Digital Data',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_FUNCTION_REGEX PRIMARY KEY (GUID)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBTBDD_FUNCTION_REGEX_AFT_UPD ON TBDD_FUNCTION_REGEX
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_FUNCTION_REGEX SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_FUNCTION_REGEX.GUID = INSERTED.GUID
|
||
GO
|
||
|
||
|
||
INSERT INTO TBDD_FUNCTION_REGEX(FUNCTION_NAME,REGEX) VALUES
|
||
('FROM_EMAIL_HEADER','From:(?:\s*[\w\s\d.@&,|+%\)\(\-]*<|\s*=\?[\w\s\d.@&,|+%?=\)\(\-]+\?=\s*<|\s*""[\w\s\d.@&,|+%\)\(\-]+""\s*<|\s*)([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})>?')
|
||
GO
|
||
INSERT INTO TBDD_FUNCTION_REGEX(FUNCTION_NAME,REGEX) VALUES
|
||
('TO_EMAIL_HEADER','To:(?:\s*[\w\s\d.@&,|+%\)\(\-]+<|\s*=\?[\w\s\d.@&,|+%?=\)\(\-]+\?=\s*<|\s*""[\w\s\d.@&,|+%\)\(\-]+""\s*<|\s*)([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})>?')
|
||
GO
|
||
INSERT INTO TBDD_FUNCTION_REGEX(FUNCTION_NAME,REGEX) VALUES
|
||
('EMAIL_PROFILER - BODY REMOVE NewLine','[^\s]([\w\s\!\<5C>\$\%\&\/\(\)\=\?\[\]\,\.\-\<5C>\:\;\<\>\@\r\n\#]{1,})^[\#]{2}')
|
||
GO
|
||
|
||
CREATE TABLE TBDD_LANGUAGE_OBJECTS
|
||
(
|
||
GUID VARCHAR(50) NOT NULL,
|
||
MODULE_ID INTEGER NOT NULL,
|
||
FORM_NAME VARCHAR(100) NOT NULL,
|
||
[LANGUAGE] VARCHAR(20),
|
||
CONTENT VARCHAR(MAX),
|
||
COMMENT VARCHAR(200),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_LANGUAGE_OBJECTS PRIMARY KEY (GUID),
|
||
CONSTRAINT FK_TBDD_LANGUAGE_OBJECTS_MODULE_ID FOREIGN KEY(MODULE_ID) REFERENCES TBDD_MODULES(GUID),
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_LANGUAGE_OBJECTS_AFT_UPD ON TBDD_LANGUAGE_OBJECTS
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_LANGUAGE_OBJECTS SET CHANGED_WHEN = GETDATE() FROM INSERTED
|
||
WHERE TBDD_LANGUAGE_OBJECTS.GUID = INSERTED.GUID
|
||
GO
|
||
|
||
|
||
CREATE TABLE TBDD_VERSION_USER_UPDATE_PATH(
|
||
GUID INTEGER NOT NULL IDENTITY(1,1),
|
||
USER_ID INT NOT NULL,
|
||
MODULE_NAME VARCHAR(30) NOT NULL,
|
||
UPDATE_PATH VARCHAR(500) NOT NULL DEFAULT '',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CONSTRAINT [PK_TBDD_VERSION_USER_UPDATE_PATH] PRIMARY KEY(GUID))
|
||
GO
|
||
CREATE TRIGGER TBDD_VERSION_USER_UPDATE_PATH_AFT_UPD ON TBDD_VERSION_USER_UPDATE_PATH
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_VERSION_USER_UPDATE_PATH SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_VERSION_USER_UPDATE_PATH.GUID = INSERTED.GUID
|
||
|
||
GO
|
||
CREATE TABLE TBDD_VERSION_UPDATE(
|
||
GUID INTEGER NOT NULL IDENTITY(1,1),
|
||
ALL_USERS BIT NOT NULL DEFAULT 0,
|
||
FORCE_UPD BIT NOT NULL DEFAULT 0,
|
||
MODULE_NAME VARCHAR(30) NOT NULL,
|
||
VERSION_NO VARCHAR(20) NOT NULL,
|
||
VERSION_FORCE_UPD VARCHAR(100) NOT NULL DEFAULT '',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CONSTRAINT [PK_TBDD_VERSION_UPDATE] PRIMARY KEY(GUID))
|
||
GO
|
||
|
||
CREATE TRIGGER [dbo].[TBDD_VERSION_UPDATE_AFT_UPD] ON [dbo].[TBDD_VERSION_UPDATE]
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@UPDATE_ID INTEGER,
|
||
@USER_ID INTEGER,
|
||
@ALL_USERS INT
|
||
SELECT @UPDATE_ID = GUID FROM INSERTED
|
||
|
||
IF UPDATE (ALL_USERS)
|
||
BEGIN
|
||
SELECT @ALL_USERS = ALL_USERS FROM INSERTED
|
||
DELETE FROM TBDD_VERSION_USER_UPDATE WHERE UPDATE_ID = @UPDATE_ID
|
||
IF @ALL_USERS = 1
|
||
BEGIN
|
||
DECLARE cursorUsers CURSOR FOR
|
||
select GUID FROM TBDD_USER
|
||
OPEN cursorUsers
|
||
FETCH NEXT FROM cursorUsers INTO @USER_ID
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
INSERT INTO TBDD_VERSION_USER_UPDATE (USER_ID, UPDATE_ID) VALUES (@USER_ID,@UPDATE_ID)
|
||
|
||
FETCH NEXT FROM cursorUsers INTO @USER_ID
|
||
END
|
||
CLOSE cursorUsers
|
||
DEALLOCATE cursorUsers
|
||
END
|
||
END
|
||
--Generelle Updates (Datum und Recor-<2D>nderungen)
|
||
UPDATE TBDD_VERSION_UPDATE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_VERSION_UPDATE.GUID = INSERTED.GUID
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
|
||
CREATE TABLE TBDD_VERSION_ITEMS(
|
||
GUID INTEGER NOT NULL IDENTITY(1,1),
|
||
UPDATE_ID INTEGER NOT NULL,
|
||
ITEM_INFO VARCHAR(100) NOT NULL,
|
||
INFO1 VARCHAR(100),
|
||
INFO2 VARCHAR(100),
|
||
INFO3 VARCHAR(100),
|
||
BIT1 BIT NOT NULL DEFAULT 0,
|
||
BIT2 BIT NOT NULL DEFAULT 0,
|
||
BIT3 BIT NOT NULL DEFAULT 0,
|
||
COMMENT VARCHAR(250),
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CONSTRAINT [PK_TBDD_VERSION_ITEMS] PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_VERSION_ITEMS_UPDATE_ID FOREIGN KEY (UPDATE_ID) REFERENCES TBDD_VERSION_UPDATE (GUID))
|
||
GO
|
||
CREATE TABLE TBDD_VERSION_USER_UPDATE(
|
||
GUID INTEGER NOT NULL IDENTITY(1,1),
|
||
[USER_ID] INTEGER NOT NULL,
|
||
UPDATE_ID INTEGER NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CONSTRAINT [PK_TBDD_VERSION_USER_UPDATE] PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_VERSION_USER_UPDATE_UPDATE_ID FOREIGN KEY (UPDATE_ID) REFERENCES TBDD_VERSION_UPDATE (GUID))
|
||
GO
|
||
|
||
|
||
CREATE OR ALTER TRIGGER [dbo].[TBDD_USER_AFT_INS] ON [dbo].[TBDD_USER]
|
||
WITH EXECUTE AS CALLER
|
||
FOR INSERT
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@USER_ID INTEGER,
|
||
@CLIENT_ID INTEGER,
|
||
@ADDED_WHO VARCHAR(50),
|
||
@CLIENT_COUNT INTEGER,
|
||
@ECM_USR_ID INTEGER,
|
||
@USRNAME VARCHAR(50),
|
||
@UPDATE_PATH VARCHAR(500)
|
||
SELECT
|
||
@USER_ID = GUID,
|
||
@ADDED_WHO = ADDED_WHO,
|
||
@USRNAME = USERNAME
|
||
|
||
FROM INSERTED
|
||
|
||
SELECT @ECM_USR_ID = [dwUserID]
|
||
FROM @WINDREAM_DB.[dbo].[UserInfo] where UPPER(szUserName) = UPPER(@USRNAME)
|
||
IF @ECM_USR_ID IS NOT NULL
|
||
UPDATE TBDD_USER SET USERID_FK_INT_ECM = @ECM_USR_ID
|
||
FROM INSERTED
|
||
WHERE TBDD_USER.GUID = INSERTED.GUID
|
||
--EXEC IDB.dbo.PRIDB_NEW_CATALOG_USER @USER_ID;
|
||
-- SELECT @CLIENT_COUNT = COUNT(*) FROM TBDD_CLIENT
|
||
-- IF @CLIENT_COUNT = 1
|
||
-- BEGIN
|
||
-- SELECT @CLIENT_COUNT = GUID FROM TBDD_CLIENT
|
||
-- INSERT INTO TBDD_CLIENT_USER (USER_ID,CLIENT_ID,ADDED_WHO) VALUES
|
||
-- (@USER_ID,@CLIENT_COUNT,@ADDED_WHO)
|
||
-- END
|
||
|
||
-- --INSERT INTO TBDD_USER_MODULES (USER_ID,MODULE_ID) VALUES (@USER_ID,3)
|
||
-- END
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
|
||
CREATE TRIGGER TBDD_USER_AFT_UPD ON TBDD_USER
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
DECLARE @USRNAME VARCHAR(50)
|
||
SELECT @USRNAME = USERNAME FROM inserted
|
||
IF UPDATE (USERNAME)
|
||
BEGIN
|
||
DECLARE @ECM_USR_ID INTEGER
|
||
SELECT @ECM_USR_ID = [dwUserID]
|
||
FROM @WINDREAM_DB.[dbo].[UserInfo] where UPPER(szUserName) = UPPER(@USRNAME)
|
||
IF @ECM_USR_ID IS NOT NULL
|
||
UPDATE TBDD_USER SET USERID_FK_INT_ECM = @ECM_USR_ID
|
||
FROM INSERTED
|
||
WHERE TBDD_USER.GUID = INSERTED.GUID
|
||
END
|
||
UPDATE TBDD_USER SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_USER.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
|
||
CREATE TABLE TBDD_CLIENT_USER
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
[USER_ID] INT NOT NULL,
|
||
CLIENT_ID INT NOT NULL,
|
||
COMMENT VARCHAR(200),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CONSTRAINT PK_TBDD_CLIENT_USER PRIMARY KEY (GUID),
|
||
CONSTRAINT FK_TBDD_CLIENT_USER_GROUP_ID FOREIGN KEY(CLIENT_ID) REFERENCES TBDD_CLIENT(GUID),
|
||
CONSTRAINT FK_TBDD_CLIENT_USER_USER_ID FOREIGN KEY([USER_ID]) REFERENCES TBDD_USER(GUID),
|
||
)
|
||
GO
|
||
CREATE TABLE TBDD_CLIENT_GROUP
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
[GROUP_ID] INT NOT NULL,
|
||
CLIENT_ID INT NOT NULL,
|
||
COMMENT VARCHAR(200),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CONSTRAINT PK_TBDD_CLIENT_GROUP PRIMARY KEY (GUID),
|
||
CONSTRAINT FK_TBDD_CLIENT_GROUP_GROUP_ID FOREIGN KEY(GROUP_ID) REFERENCES TBDD_GROUPS(GUID),
|
||
CONSTRAINT FK_TBDD_CLIENT_GROUP_CLIENT_ID FOREIGN KEY(CLIENT_ID) REFERENCES TBDD_CLIENT(GUID),
|
||
)
|
||
GO
|
||
|
||
CREATE TABLE TBDD_USER_MODULES
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
[USER_ID] INT NOT NULL,
|
||
MODULE_ID INT NOT NULL,
|
||
IS_ADMIN BIT NOT NULL DEFAULT 0,
|
||
RIGHT1 BIT NOT NULL DEFAULT 0,
|
||
RIGHT2 BIT NOT NULL DEFAULT 0,
|
||
RIGHT3 BIT NOT NULL DEFAULT 0,
|
||
RIGHT4 BIT NOT NULL DEFAULT 0,
|
||
COMMENT VARCHAR(200),
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME ,
|
||
CONSTRAINT PK_TBDD_USER_MODULES PRIMARY KEY (GUID),
|
||
CONSTRAINT UQ_TBDD_USER_MODULES UNIQUE([USER_ID],MODULE_ID),
|
||
CONSTRAINT FK_TBDD_USER_MODULES_MODULE_ID FOREIGN KEY(MODULE_ID) REFERENCES TBDD_MODULES(GUID),
|
||
CONSTRAINT FK_TBDD_USER_MODULES2_USER_ID FOREIGN KEY([USER_ID]) REFERENCES TBDD_USER(GUID),
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_USER_MODULES_AFT_UPD ON TBDD_USER_MODULES
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_USER_MODULES SET CHANGED_WHEN = GETDATE() FROM INSERTED
|
||
WHERE TBDD_USER_MODULES.GUID = INSERTED.GUID
|
||
GO
|
||
|
||
INSERT INTO TBDD_USER_MODULES (USER_ID,MODULE_ID,IS_ADMIN) SELECT GUID,(SELECT GUID FROM TBDD_MODULES WHERE SHORT_NAME = 'UM'),1 FROM TBDD_USER where GUID NOT IN (
|
||
SELECT USER_ID FROM TBDD_USER_MODULES WHERE MODULE_ID = (SELECT GUID FROM TBDD_MODULES WHERE SHORT_NAME = 'UM'))
|
||
GO
|
||
|
||
CREATE TRIGGER [dbo].[TBDD_USER_AFT_DEL] ON [dbo].[TBDD_USER]
|
||
FOR DELETE
|
||
AS
|
||
DECLARE @USER_ID INTEGER
|
||
BEGIN
|
||
SELECT @USER_ID = GUID FROM DELETED
|
||
IF @USER_ID IN (0,1)
|
||
BEGIN
|
||
ROLLBACK TRANSACTION
|
||
RAISERROR('THIS USER CAN NOT BE DELETED!',16,10)
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
INSERT INTO TBPMO_USER_RIGHTS_JOBS (USER_ID,COMMENT,ADDED_WHO) VALUES
|
||
(@USER_ID,'USER DELETED','TBDD_GROUPS_USER_AFT_DEL')
|
||
END
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_USER_MODULE_LOG_IN
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
CLIENT_ID INTEGER NOT NULL DEFAULT 0,
|
||
CONNECTION_STRING VARCHAR(500) NOT NULL DEFAULT '' ,
|
||
USER_ID INTEGER NOT NULL,
|
||
MACHINE_NAME VARCHAR(250) NOT NULL DEFAULT '',
|
||
MODULE VARCHAR(50),
|
||
VERSION_CLIENT VARCHAR(30),
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE() NOT NULL,
|
||
CONSTRAINT PK_TBDD_USER_MODULE_LOG_IN PRIMARY KEY (GUID)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_USER_MODULE_LOG_IN_AFT_INS ON TBDD_USER_MODULE_LOG_IN
|
||
WITH EXECUTE AS CALLER
|
||
FOR INSERT
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@USER_ID INTEGER,
|
||
@MODULE VARCHAR(50),
|
||
@CLIENT_ID INTEGER,
|
||
@VERSION_CLIENT VARCHAR(30),
|
||
@MACHINE_NAME VARCHAR(50),
|
||
@CONNECTION_STRING VARCHAR(500)
|
||
SELECT
|
||
@USER_ID = USER_ID,
|
||
@MODULE = MODULE,
|
||
@CLIENT_ID = CLIENT_ID,
|
||
@VERSION_CLIENT = VERSION_CLIENT,
|
||
@MACHINE_NAME = MACHINE_NAME,
|
||
@CONNECTION_STRING = CONNECTION_STRING
|
||
FROM INSERTED
|
||
|
||
IF @VERSION_CLIENT IS NULL
|
||
SET @VERSION_CLIENT = '1.0.0.0'
|
||
INSERT INTO TBDD_USER_LOGIN_OUT (MODULE,USER_ID,CLIENT_ID,VERSION_CLIENT,MACHINE_NAME,CONNECTION_STRING) VALUES (@MODULE,@USER_ID,@CLIENT_ID,@VERSION_CLIENT,@MACHINE_NAME,@CONNECTION_STRING)
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'FEHLER IN TRIGGER: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE()) + ' - ZEILE: ' + CONVERT(VARCHAR(10),ERROR_LINE())
|
||
+ ' - FEHLER-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
CREATE TRIGGER TBDD_USER_MODULE_LOG_IN_AFT_DEL ON TBDD_USER_MODULE_LOG_IN
|
||
FOR DELETE
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@USER_ID INTEGER,
|
||
@MODULE VARCHAR(50),
|
||
@CLIENT_ID INTEGER
|
||
SELECT
|
||
@USER_ID = USER_ID,
|
||
@MODULE = MODULE,
|
||
@CLIENT_ID = CLIENT_ID
|
||
FROM DELETED
|
||
|
||
UPDATE TBDD_USER_LOGIN_OUT SET LOGOUT = GETDATE() WHERE GUID = (
|
||
SELECT MAX(GUID) FROM TBDD_USER_LOGIN_OUT WHERE USER_ID = @USER_ID AND MODULE = @MODULE AND CLIENT_ID = @CLIENT_ID)
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
CREATE TABLE TBDD_CONNECTION
|
||
|
||
(
|
||
GUID SMALLINT IDENTITY(1,1),
|
||
BEZEICHNUNG VARCHAR(100),
|
||
SQL_PROVIDER VARCHAR(50),
|
||
SERVER VARCHAR(150),
|
||
DATENBANK VARCHAR(100),
|
||
USERNAME VARCHAR(100),
|
||
PASSWORD VARCHAR(100),
|
||
BEMERKUNG VARCHAR(400),
|
||
SYS_CONNECTION BIT DEFAULT 0 NOT NULL,
|
||
AKTIV BIT DEFAULT 1 NOT NULL, -- 1 - Connection aktiv, 0 - inaktiv
|
||
ERSTELLTWER VARCHAR(50) DEFAULT 'DD_ECM DEFAULT' NOT NULL,
|
||
ERSTELLTWANN DATETIME DEFAULT GETDATE(),
|
||
GEANDERTWER VARCHAR(50),
|
||
GEAENDERTWANN DATETIME,
|
||
CONSTRAINT PK_TBDD_CONNECTION PRIMARY KEY (GUID)
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
|
||
CREATE TRIGGER TBDD_CONNECTION_AFT_UPD ON TBDD_CONNECTION
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_CONNECTION SET GEAENDERTWANN = GETDATE() FROM INSERTED WHERE TBDD_CONNECTION.GUID = INSERTED.GUID
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
INSERT INTO TBDD_CONNECTION(BEZEICHNUNG,SQL_PROVIDER,SERVER,DATENBANK,USERNAME,PASSWORD) VALUES ('DD_ECM','MS-SQL','@ECM_IP','DD_ECM','@ECM_USER','@ECM_PW')
|
||
GO
|
||
INSERT INTO TBDD_CONNECTION(BEZEICHNUNG,SQL_PROVIDER,SERVER,DATENBANK,USERNAME,PASSWORD) VALUES ('IDB','MS-SQL','@ECM_IP','DD_ECM','@ECM_USER','@ECM_PW')
|
||
GO
|
||
--INSERT INTO TBCONNECTION(BEZEICHNUNG,SQL_PROVIDER,SERVER,DATENBANK,USERNAME,PASSWORD) VALUES ('Zeiterfassung','SQLOLEDB','192.168.48.13','DD_ZEITERFASSUNG_AB_112011','sa','dd')
|
||
--GO
|
||
--INSERT INTO TBCONNECTION(BEZEICHNUNG,SQL_PROVIDER,SERVER,DATENBANK,USERNAME,PASSWORD) VALUES ('Oracle-Fuchs','OraOLEDB.Oracle','192.168.48.32','10FUCHS','IID_GH','dd')
|
||
--GO
|
||
|
||
|
||
CREATE TABLE TBDD_DOKUMENTART
|
||
(
|
||
GUID INT IDENTITY(1,1),
|
||
BEZEICHNUNG VARCHAR(50) NOT NULL,
|
||
OBJEKTTYP VARCHAR(50) NOT NULL,
|
||
EINGANGSART_ID TINYINT NOT NULL, -- Typ der die Entstehung der dokumnetart beschreibt
|
||
KURZNAME VARCHAR(50) NOT NULL,
|
||
ZIEL_PFAD VARCHAR(250) NOT NULL,
|
||
BESCHREIBUNG VARCHAR(250),
|
||
WINDREAM_DIRECT BIT DEFAULT 0 NOT NULL,
|
||
FOLDER_FOR_INDEX VARCHAR(500) DEFAULT '' NOT NULL,
|
||
DUPLICATE_HANDLING VARCHAR(30) NOT NULL DEFAULT 'Default',
|
||
AKTIV BIT DEFAULT 0 NOT NULL, -- 1 - Dokumentart aktiv und kann benutzt werden, 0 - inaktiv
|
||
[LANGUAGE] VARCHAR(5) NOT NULL DEFAULT 'de-DE',
|
||
SEQUENCE INT NOT NULL DEFAULT 1,
|
||
IDB_OBJECT_STORE_ID INT DEFAULT 0 NOT NULL,
|
||
NAMENKONVENTION VARCHAR(500) NOT NULL DEFAULT '',
|
||
ERSTELLTWER VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
|
||
ERSTELLTWANN DATETIME DEFAULT GETDATE(),
|
||
GEANDERTWER VARCHAR(50),
|
||
GEAENDERTWANN DATETIME,
|
||
CONSTRAINT PK_TBDD_DOKUMENTART PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_DOKUMENTART_EINGID FOREIGN KEY(EINGANGSART_ID) REFERENCES TBDD_EINGANGSARTEN(GUID),
|
||
CONSTRAINT UNIQUE_TBDD_DOKUMENTART UNIQUE(BEZEICHNUNG)
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
|
||
CREATE TRIGGER TBDD_DOKUMENTART_AFT_UPD ON TBDD_DOKUMENTART
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@DA_TITLE VARCHAR(50),
|
||
@LANGUAGE VARCHAR(5),
|
||
@CHANGED_WHO VARCHAR(50),
|
||
@GUID INTEGER,
|
||
@SCREEN_ID INTEGER,
|
||
@PMO_OBJECT_NAME VARCHAR(100)
|
||
SELECT
|
||
@GUID = GUID,
|
||
@DA_TITLE = BEZEICHNUNG,
|
||
@SCREEN_ID = 1,
|
||
@CHANGED_WHO = GEANDERTWER
|
||
FROM INSERTED
|
||
SELECT @LANGUAGE = [LANGUAGE] FROM TBDD_USER WHERE UPPER(USERNAME) = UPPER(@CHANGED_WHO)
|
||
SET @PMO_OBJECT_NAME = 'DOCTYPE_TITLE' + CONVERT(VARCHAR(5),@GUID)
|
||
|
||
UPDATE TBDD_DOKUMENTART SET GEAENDERTWANN = GETDATE() FROM INSERTED
|
||
WHERE TBDD_DOKUMENTART.GUID = INSERTED.GUID
|
||
IF UPDATE (BEZEICHNUNG)
|
||
BEGIN
|
||
IF OBJECT_ID(N'dbo.TBPMO_WD_OBJECTTYPE', N'U') IS NOT NULL
|
||
BEGIN
|
||
If exists(SELECT * FROM TBPMO_LANGUAGE_OBJECT WHERE PMO_OBJECT_NAME = @PMO_OBJECT_NAME AND
|
||
LANGUAGE_TYPE = @LANGUAGE AND SCREEN_ID = @SCREEN_ID)
|
||
UPDATE TBPMO_LANGUAGE_OBJECT SET CAPTION = @DA_TITLE,CHANGED_WHO = @CHANGED_WHO WHERE
|
||
PMO_OBJECT_NAME = @PMO_OBJECT_NAME AND
|
||
LANGUAGE_TYPE = @LANGUAGE AND SCREEN_ID = @SCREEN_ID
|
||
ELSE
|
||
INSERT INTO TBPMO_LANGUAGE_OBJECT (LANGUAGE_TYPE,SCREEN_ID,PMO_OBJECT_NAME,CAPTION) VALUES
|
||
(@LANGUAGE,@SCREEN_ID,@PMO_OBJECT_NAME,@DA_TITLE)
|
||
END
|
||
END
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
|
||
CREATE TRIGGER [dbo].[TBDD_DOKUMENTART_AFT_INS] ON [dbo].[TBDD_DOKUMENTART]
|
||
WITH EXECUTE AS CALLER
|
||
FOR INSERT
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@DA_TITLE VARCHAR(50),
|
||
@LANGUAGE VARCHAR(5),
|
||
@ADDED_WHO VARCHAR(50),
|
||
@GUID INTEGER,
|
||
@SCREEN_ID INTEGER,
|
||
@PMO_OBJECT_NAME VARCHAR(100)
|
||
SELECT
|
||
@GUID = GUID,
|
||
@DA_TITLE = BEZEICHNUNG,
|
||
@LANGUAGE = [LANGUAGE],
|
||
@SCREEN_ID = 1,
|
||
@ADDED_WHO = ERSTELLTWER
|
||
FROM INSERTED
|
||
|
||
SET @PMO_OBJECT_NAME = 'DOCTYPE_TITLE' + CONVERT(VARCHAR(5),@GUID)
|
||
IF OBJECT_ID(N'dbo.TBPMO_WD_OBJECTTYPE', N'U') IS NOT NULL
|
||
INSERT INTO TBPMO_LANGUAGE_OBJECT (LANGUAGE_TYPE,SCREEN_ID,PMO_OBJECT_NAME,CAPTION,ADDED_WHO) VALUES
|
||
(@LANGUAGE,@SCREEN_ID,@PMO_OBJECT_NAME,@DA_TITLE,@ADDED_WHO)
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
|
||
CREATE TRIGGER TBDD_DOKUMENTART_AFT_INS2 ON TBDD_DOKUMENTART
|
||
WITH EXECUTE AS CALLER
|
||
FOR INSERT
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@ADDED_WHO VARCHAR(50),
|
||
@OBJEKTTYP VARCHAR(50),
|
||
@GUID INTEGER
|
||
SELECT
|
||
@GUID = GUID,
|
||
@ADDED_WHO = ERSTELLTWER,
|
||
@OBJEKTTYP = OBJEKTTYP
|
||
FROM INSERTED
|
||
IF OBJECT_ID(N'dbo.TBPMO_CLIENT_DOCTYPE', N'U') IS NOT NULL
|
||
INSERT INTO TBPMO_CLIENT_DOCTYPE (CLIENT_ID,DOCTYPE_ID)
|
||
SELECT T.CLIENT_ID,@GUID FROM TBDD_CLIENT_USER T, TBDD_USER T1 WHERE T.USER_ID = T1.GUID AND UPPER(T1.USERNAME) = UPPER(@ADDED_WHO)
|
||
|
||
IF OBJECT_ID(N'dbo.TBPMO_WD_OBJECTTYPE', N'U') IS NOT NULL
|
||
IF @OBJEKTTYP IS NOT NULL
|
||
IF @OBJEKTTYP <> ''
|
||
BEGIN
|
||
DECLARE @IDX_DOC VARCHAR(50),@IDX_REC VARCHAR(50)
|
||
SELECT @IDX_DOC = IDXNAME_DOCTYPE,
|
||
@IDX_REC = IDXNAME_RECORDID FROM TBPMO_WD_OBJECTTYPE WHERE OBJECT_TYPE = @OBJEKTTYP
|
||
IF @IDX_REC IS NOT NULL
|
||
INSERT INTO TBDD_INDEX_AUTOM (DOCTYPE_ID,INDEXNAME,VALUE,ACTIVE,ADDED_WHO) VALUES
|
||
(@GUID,@IDX_REC,'@Record-ID',1,@ADDED_WHO)
|
||
IF @IDX_DOC IS NOT NULL
|
||
INSERT INTO TBDD_INDEX_AUTOM (DOCTYPE_ID,INDEXNAME,VALUE,ACTIVE,ADDED_WHO) VALUES
|
||
(@GUID,@IDX_DOC,'@Dokart',1,@ADDED_WHO)
|
||
END
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
|
||
CREATE TABLE TBDD_DOKUMENTART_MODULE
|
||
(
|
||
GUID INT IDENTITY(1,1),
|
||
DOKART_ID INT NOT NULL,
|
||
MODULE_ID INT NOT NULL,
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'Digital Data' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PKTBDD_DOKART_MODULE PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_DOKART_MODULE_DOKART_ID FOREIGN KEY(DOKART_ID) REFERENCES TBDD_DOKUMENTART(GUID),
|
||
CONSTRAINT FK_TBDD_DOKART_MODULE_MODULE_ID FOREIGN KEY(MODULE_ID) REFERENCES TBDD_MODULES(GUID),
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
|
||
CREATE TRIGGER TBDD_DOKUMENTART_MODULE_AFT_UPD ON TBDD_DOKUMENTART_MODULE
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_DOKUMENTART_MODULE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_DOKUMENTART_MODULE.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
CREATE TABLE TBDD_USER_DOKTYPE
|
||
(
|
||
GUID INT IDENTITY(10000,1),
|
||
DOCTYPE_ID INT NOT NULL,
|
||
USER_ID INT NOT NULL,
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'Digital Data' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PKTBDD_USER_DOKTYPE PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_USER_DOKTYPE_DTID FOREIGN KEY(DOCTYPE_ID) REFERENCES TBDD_DOKUMENTART(GUID),
|
||
CONSTRAINT FK_TBDD_USER_DOKTYPE_USRID FOREIGN KEY(USER_ID) REFERENCES TBDD_USER(GUID),
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_USER_DOKTYPE_AFT_UPD ON TBDD_USER_DOKTYPE
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_USER_DOKTYPE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_USER_DOKTYPE.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_INDEX_MAN
|
||
(
|
||
GUID INT IDENTITY(1,1),
|
||
DOK_ID INT NOT NULL,
|
||
NAME VARCHAR(50) NOT NULL,
|
||
WD_INDEX VARCHAR(50),
|
||
--SAVE_VALUE BIT NOT NULL DEFAULT 0,
|
||
COMMENT VARCHAR(150),
|
||
DATATYPE VARCHAR(50),
|
||
SUGGESTION BIT DEFAULT 0 NOT NULL, -- 1 - Es wird Eingabe vorgeschlagen, bei 0 - manuelle Eingabe.
|
||
DEFAULT_VALUE VARCHAR(50) NOT NULL DEFAULT '',
|
||
CONNECTION_ID SMALLINT DEFAULT 0,
|
||
SEQUENCE INTEGER NOT NULL DEFAULT 1,
|
||
SQL_RESULT VARCHAR(2000) NOT NULL DEFAULT '',
|
||
SQL_CHECK VARCHAR(2000) NOT NULL DEFAULT '',
|
||
OPTIONAL BIT DEFAULT 0 NOT NULL,
|
||
SAVE_VALUE BIT DEFAULT 0 NOT NULL,
|
||
VKT_ADD_ITEM BIT NOT NULL DEFAULT 0,
|
||
VKT_PREVENT_MULTIPLE_VALUES BIT NOT NULL DEFAULT 1,
|
||
MULTISELECT BIT NOT NULL DEFAULT 0,
|
||
ACTIVE BIT DEFAULT 1 NOT NULL, -- 1 - Index aktiv, bei 0 - inaktiv.
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DD_ECM DEFAULT' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE() ,
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_INDEX_MAN PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_INDEX_MAN_DAID FOREIGN KEY(DOK_ID) REFERENCES TBDD_DOKUMENTART(GUID),
|
||
CONSTRAINT FK_TBDD_INDEX_MAN_CID FOREIGN KEY(CONNECTION_ID) REFERENCES TBDD_CONNECTION(GUID)
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
CREATE TRIGGER TBINDEX_MAN_AFT_UPD ON TBDD_INDEX_MAN
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_INDEX_MAN SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_INDEX_MAN.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
|
||
CREATE TABLE TBDD_INDEX_AUTOM
|
||
(
|
||
GUID INT IDENTITY(1,1),
|
||
DOCTYPE_ID INT NOT NULL,
|
||
[ENTITY_ID] INTEGER DEFAULT 0 NOT NULL,
|
||
INDEXNAME VARCHAR(50) NOT NULL,
|
||
[VALUE] VARCHAR(2000),
|
||
CONNECTION_ID SMALLINT NOT NULL DEFAULT 0,
|
||
[SQL_RESULT] VARCHAR(2000) DEFAULT '' NOT NULL,
|
||
SQL_ACTIVE BIT DEFAULT 0 NOT NULL,
|
||
VKT_PREVENT_MULTIPLE_VALUES BIT DEFAULT 0,
|
||
VKT_OVERWRITE BIT DEFAULT 0,
|
||
COMMENT VARCHAR(400),
|
||
ACTIVE BIT DEFAULT 1 NOT NULL, -- 1 - Index aktiv, bei 0 - inaktiv.
|
||
SEQUENCE INT DEFAULT 1 NOT NULL,
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE() ,
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_INDEX_AUTOM PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_INDEX_AUTOM_DOCID FOREIGN KEY(DOCTYPE_ID) REFERENCES TBDD_DOKUMENTART(GUID)
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
|
||
CREATE TRIGGER TBDD_INDEX_AUTOM_AFT_UPD ON TBDD_INDEX_AUTOM
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_INDEX_AUTOM SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_INDEX_AUTOM.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
|
||
|
||
CREATE TABLE TBDD_INDEX_MAN_POSTPROCESSING
|
||
(
|
||
GUID INT IDENTITY(1,1),
|
||
IDXMAN_ID INT NOT NULL,
|
||
VARIANT VARCHAR(20) NOT NULL DEFAULT 'FILE AND INDEX',
|
||
COMMENT VARCHAR(250),
|
||
[TYPE] VARCHAR(50), -- Beschreibt intern welche Funktion genutzt wird:SPLIT,REPLACE
|
||
FUNCTION1 VARCHAR(250), -- Funktionen wie RegexExpressions
|
||
FUNCTION2 VARCHAR(250), -- Funktionen wie RegexExpressions
|
||
TEXT1 VARCHAR(100), -- Option1 zB: Replace1
|
||
TEXT2 VARCHAR(100), -- Option2 zB: Replace_with
|
||
TEXT3 VARCHAR(100), -- Option2
|
||
SEQUENCE INT NOT NULL DEFAULT 1,
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'Digital Data' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PKTBDD_INDEX_MAN_POSTPROCESSING PRIMARY KEY(GUID),
|
||
CONSTRAINT FKTBDD_INDEX_MAN_POSTPROCESSING_IDXID FOREIGN KEY(IDXMAN_ID) REFERENCES TBDD_INDEX_MAN(GUID)
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
|
||
CREATE TRIGGER TBDD_INDEX_MAN_POSTPROCESSING_AFT_UPD ON TBDD_INDEX_MAN_POSTPROCESSING
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_INDEX_MAN_POSTPROCESSING SET CHANGED_WHEN = GETDATE()
|
||
FROM INSERTED WHERE TBDD_INDEX_MAN_POSTPROCESSING.GUID = INSERTED.GUID
|
||
GO
|
||
CREATE TABLE TBDD_EMAIL_ACCOUNT
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
NAME VARCHAR(50),
|
||
EMAIL_NAME VARCHAR(100) DEFAULT '',
|
||
EMAIL_FROM VARCHAR(100) NOT NULL,
|
||
EMAIL_FROM_NAME VARCHAR(100) DEFAULT '',
|
||
EMAIL_SMTP VARCHAR(100) NOT NULL,
|
||
EMAIL_USER VARCHAR(100) NOT NULL,
|
||
EMAIL_PW VARCHAR(250) NOT NULL DEFAULT '',
|
||
AUTH_TYPE VARCHAR(20) NOT NULL DEFAULT 'SSL',
|
||
SSL_AUTH BIT NOT NULL DEFAULT 0,
|
||
PORT INTEGER NOT NULL DEFAULT '25',
|
||
PORT_IN INT NOT NULL DEFAULT 25,
|
||
ACTIVE BIT NOT NULL DEFAULT 1,
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT',
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_EMAIL_ACCOUNT PRIMARY KEY (GUID)
|
||
)
|
||
GO
|
||
|
||
CREATE TRIGGER TBDD_EMAIL_ACCOUNT_AFT_UPD ON TBDD_EMAIL_ACCOUNT
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_EMAIL_ACCOUNT SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_EMAIL_ACCOUNT.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
|
||
CREATE TABLE TBDD_USER_LOGIN_OUT(
|
||
GUID INT IDENTITY(1,1) NOT NULL,
|
||
CONNECTION_STRING VARCHAR(500) NOT NULL DEFAULT '',
|
||
CLIENT_ID INT NOT NULL,
|
||
MACHINE_NAME VARCHAR(250) NOT NULL DEFAULT '',
|
||
MODULE VARCHAR(30) NOT NULL,
|
||
[USER_ID] INT NOT NULL,
|
||
VERSION_CLIENT VARCHAR(30),
|
||
[LOGIN] DATETIME DEFAULT (GETDATE()),
|
||
[LOGOUT] DATETIME,
|
||
CONSTRAINT [PK_TBDD_USER_LOGIN_OUT] PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_USER_LOGIN_OUT_USER_ID FOREIGN KEY ([USER_ID]) REFERENCES TBDD_USER (GUID))
|
||
GO
|
||
CREATE TABLE TBDD_USRGRP_DOKTYPE
|
||
(
|
||
GUID INT IDENTITY(100,1),
|
||
DOCTYPE_ID INT NOT NULL,
|
||
GROUP_ID INT NOT NULL,
|
||
ADDED_WHO VARCHAR(50) DEFAULT 'Digital Data' NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PKTBDD_USRGRP_DOKTYPE PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_USRGRP_DOKTYPE_DOCTYPE_ID FOREIGN KEY(DOCTYPE_ID) REFERENCES TBDD_DOKUMENTART(GUID),
|
||
CONSTRAINT FK_TBDD_USRGRP_DOKTYPE_GROUP_ID FOREIGN KEY(GROUP_ID) REFERENCES TBDD_GROUPS(GUID),
|
||
)
|
||
GO
|
||
------------------------------------------------------------------------------
|
||
|
||
CREATE TRIGGER TBDD_USRGRP_DOKTYPE_AFT_UPD ON TBDD_USRGRP_DOKTYPE
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_USRGRP_DOKTYPE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_USRGRP_DOKTYPE.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
|
||
CREATE TABLE TBDD_LICENSE_ADD_ON(
|
||
[GUID] INT IDENTITY(1,1) NOT NULL,
|
||
[CLIENT_ID] INT NOT NULL,
|
||
[MODULE] VARCHAR(100) NOT NULL,
|
||
[NAME] VARCHAR(100) NOT NULL,
|
||
[VALID_DATE] VARCHAR(2000) NOT NULL,
|
||
[ADDED_WHO] VARCHAR(50) NOT NULL DEFAULT ('DEFAULT'),
|
||
[ADDED_WHEN] DATETIME DEFAULT (getdate()),
|
||
[CHANGED_WHO] VARCHAR(50),
|
||
[CHANGED_WHEN] DATETIME
|
||
CONSTRAINT [PK_TBDD_LICENSE_ADD_ON] PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_LICENSE_ADD_ON_CLIENT_ID FOREIGN KEY ([CLIENT_ID]) REFERENCES TBDD_CLIENT (GUID))
|
||
GO
|
||
--INSERT INTO TBDD_LICENSE_ADD_ON (CLIENT_ID, MODULE, NAME, VALID_DATE) VALUES (0,'Record-Organizer', 'Proxy-Server', '+bk8oAbbQP1AzoHtvZUbd+Mbok2f8Fl4miEx1qssJ5yEaEWoQJ9prg4L14fURpPncZwT1S0JUXDWEzuCTBqgpd20QM74AAN6')
|
||
--GO
|
||
--INSERT INTO TBDD_LICENSE_ADD_ON (CLIENT_ID, MODULE, NAME, VALID_DATE) VALUES (1,'Record-Organizer', 'Site-AddOn', '+bk8oAbbQP1AzoHtvZUbd+Mbok2f8Fl4miEx1qssJ5yEaEWoQJ9prg4L14fURpPncZwT1S0JUXDWEzuCTBqgpd20QM74AAN6')
|
||
--GO
|
||
|
||
-- END CREATE TABLES
|
||
CREATE TABLE TBDD_EMAIL_TEMPLATE
|
||
(
|
||
GUID INTEGER NOT NULL IDENTITY (1, 1),
|
||
TITLE VARCHAR(100) NOT NULL,
|
||
EMAIL_SUBJECT VARCHAR(900) NOT NULL,
|
||
EMAIL_BODY1 VARCHAR(MAX) NOT NULL,
|
||
EMAIL_BODY2 VARCHAR(MAX) NOT NULL DEFAULT '',
|
||
EMAIL_BODY3 VARCHAR(MAX) NOT NULL DEFAULT '',
|
||
[LANGUAGE] VARCHAR(5) NOT NULL DEFAULT 'de-DE',
|
||
CONNECTED_TEMPLATE INTEGER NOT NULL DEFAULT 0,
|
||
ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'Digital Data',
|
||
ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()),
|
||
CHANGED_WHO VARCHAR(30),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBCUST_EMAIL_TEMPLATE PRIMARY KEY (GUID),
|
||
CONSTRAINT UQ_TBCUST_EMAIL_TEMPLATE_TITLE UNIQUE (TITLE)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBCUST_EMAIL_TEMPLATE_AFT_UPD ON [dbo].[TBDD_EMAIL_TEMPLATE]
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_EMAIL_TEMPLATE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_EMAIL_TEMPLATE.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_SQL_COMMANDS
|
||
(
|
||
GUID INTEGER NOT NULL IDENTITY (1, 1),
|
||
TITLE VARCHAR(100) NOT NULL,
|
||
SQL_COMMAND VARCHAR(MAX) NOT NULL,
|
||
ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'Digital Data',
|
||
ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()),
|
||
CHANGED_WHO VARCHAR(30),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_SQL_COMMANDS PRIMARY KEY (GUID),
|
||
CONSTRAINT UQ_TBDD_SQL_COMMANDS UNIQUE (TITLE)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_SQL_COMMANDS_AFT_UPD ON [dbo].TBDD_SQL_COMMANDS
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_SQL_COMMANDS SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_SQL_COMMANDS.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
INSERT INTO TBDD_SQL_COMMANDS (TITLE,SQL_COMMAND) VALUES ('PM_IDB_DOC_DATA',
|
||
'select * from IDB.dbo.VWIDB_DOC_DATA T, TBPM_PROFILE_FILES T1 WHERE T.IDB_OBJ_ID = T1.DOC_ID AND T1.GUID = @DOC_GUID')
|
||
GO
|
||
INSERT INTO TBDD_SQL_COMMANDS (TITLE,SQL_COMMAND) VALUES ('GHOST_SELECT','
|
||
SELECT T.USERNAME,T.NAME, T.[PRENAME],T.EMAIL FROM TBDD_USER T ORDER BY USERNAME')
|
||
GO
|
||
CREATE TABLE TBDD_GUI_LANGUAGE_PHRASE
|
||
(
|
||
GUID INTEGER NOT NULL IDENTITY (1, 1),
|
||
MODULE VARCHAR(50) NOT NULL,
|
||
INTERNAL BIT NOT NULL DEFAULT 0,
|
||
OBJ_NAME VARCHAR(100) NOT NULL,
|
||
TITLE VARCHAR(100) NOT NULL,
|
||
[LANGUAGE] VARCHAR(5) NOT NULL,
|
||
CAPT_TYPE VARCHAR(50) NOT NULL,
|
||
STRING1 VARCHAR(900) NOT NULL,
|
||
STRING2 VARCHAR(900) NOT NULL,
|
||
STRING3 VARCHAR(900) ,
|
||
STRING4 VARCHAR(900),
|
||
STRING5 VARCHAR(900),
|
||
STRING6 VARCHAR(900),
|
||
ACTIVE BIT NOT NULL DEFAULT 1,
|
||
ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'Digital Data',
|
||
ADDED_WHEN DATETIME DEFAULT (GETDATE()),
|
||
CHANGED_WHO VARCHAR(30),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_GUI_LANGUAGE_PHRASE PRIMARY KEY (GUID),
|
||
CONSTRAINT UQ_TBDD_GUI_LANGUAGE_PHRASE UNIQUE (MODULE,OBJ_NAME,TITLE,[LANGUAGE])
|
||
)
|
||
GO
|
||
|
||
CREATE TRIGGER TBDD_GUI_LANGUAGE_PHRASE_AFT_UPD ON [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_GUI_LANGUAGE_PHRASE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_GUI_LANGUAGE_PHRASE.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2)
|
||
VALUES('frmValidator','PM','frmValidator.MissingInput','de-DE','Information','Bitte validieren Sie die rot markierten Felder!','')
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2)
|
||
VALUES('frmValidator','PM','frmValidator.MissingInput','en-US','Information','Please validate red marked fields!','')
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2)
|
||
VALUES('frmValidator','PM','frmValidator.ValidationButton','de-DE','Button','Validierung speichern - N<>chstes Dokument (F2)','')
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2)
|
||
VALUES('frmValidator','PM','frmValidator.ValidationButton','en-US','Button','Save validation - Next document (F2)','')
|
||
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2)
|
||
VALUES('frmValidator','PM','frmValidator.NoMoreDocument','de-DE','MsgBox','No more document! End of profile!','')
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2)
|
||
VALUES('frmValidator','PM','frmValidator.NoMoreDocument','en-US','MsgBox','Kein weiteres Dokuemnt gefunden - Ende des Profils!','Hinweis')
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2)
|
||
VALUES('frmValidator','PM','frmValidator.WrongInputControl','de-DE','Information','Falsche Eingabe','')
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2)
|
||
VALUES('frmValidator','PM','frmValidator.WrongInputControl','en-US','Information','Wrong input','')
|
||
GO
|
||
CREATE TABLE TBDD_GUI_LANGUAGE
|
||
(
|
||
GUID INTEGER NOT NULL IDENTITY(1,1),
|
||
LANG_CODE VARCHAR(5) NOT NULL,
|
||
IS_DEFAULT BIT NOT NULL DEFAULT 0,
|
||
ADDED_WHO VARCHAR(50) NOT NULL DEFAULT 'DEFAULT',
|
||
ADDED_WHEN DATETIME NOT NULL DEFAULT GETDATE(),
|
||
ACTIVE BIT NOT NULL DEFAULT 0,
|
||
CHANGED_WHO VARCHAR(50),
|
||
CHANGED_WHEN DATETIME
|
||
CONSTRAINT PK_TBDD_GUI_LANGUAGE PRIMARY KEY (GUID)
|
||
)
|
||
GO
|
||
INSERT INTO TBDD_GUI_LANGUAGE (LANG_CODE,IS_DEFAULT,ACTIVE) VALUES ('de-DE',1,1);
|
||
INSERT INTO TBDD_GUI_LANGUAGE (LANG_CODE) VALUES ('en-US');
|
||
INSERT INTO TBDD_GUI_LANGUAGE (LANG_CODE) VALUES ('fr-FR');
|
||
GO
|
||
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
([MODULE]
|
||
,[TITLE]
|
||
,[LANGUAGE]
|
||
,[CAPT_TYPE]
|
||
,[STRING1]
|
||
,[STRING2]
|
||
,[ADDED_WHO]
|
||
,[OBJ_NAME]
|
||
,[INTERNAL])
|
||
VALUES
|
||
('All Modules'
|
||
,'No Userconfig'
|
||
,'de-DE'
|
||
,'Information'
|
||
,'Achtung: Sie sind nicht in der Userverwaltung hinterlegt!'
|
||
,'Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!'
|
||
,'SYSTEM'
|
||
,'General'
|
||
,1)
|
||
GO
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
([MODULE]
|
||
,[TITLE]
|
||
,[LANGUAGE]
|
||
,[CAPT_TYPE]
|
||
,[STRING1]
|
||
,[STRING2]
|
||
,[ADDED_WHO]
|
||
,[OBJ_NAME]
|
||
,[INTERNAL])
|
||
VALUES
|
||
('All Modules'
|
||
,'No Userconfig'
|
||
,'en-US'
|
||
,'Information'
|
||
,'Achtung: Sie sind nicht in der Userverwaltung hinterlegt!'
|
||
,'Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!'
|
||
,'SYSTEM'
|
||
,'General'
|
||
,1)
|
||
GO
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
([MODULE]
|
||
,[TITLE]
|
||
,[LANGUAGE]
|
||
,[CAPT_TYPE]
|
||
,[STRING1]
|
||
,[STRING2]
|
||
,[ADDED_WHO]
|
||
,[OBJ_NAME]
|
||
,[INTERNAL])
|
||
VALUES
|
||
('All Modules'
|
||
,'No Client relation'
|
||
,'de-DE'
|
||
,'Information'
|
||
,'You are not related to a client!'
|
||
,'Please contact the system administrator!!'
|
||
,'SYSTEM'
|
||
,'General'
|
||
,1)
|
||
GO
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
([MODULE]
|
||
,[TITLE]
|
||
,[LANGUAGE]
|
||
,[CAPT_TYPE]
|
||
,[STRING1]
|
||
,[STRING2]
|
||
,[ADDED_WHO]
|
||
,[OBJ_NAME]
|
||
,[INTERNAL])
|
||
VALUES
|
||
('All Modules'
|
||
,'No Client relation'
|
||
,'en-US'
|
||
,'Information'
|
||
,'You are not related to a client!'
|
||
,'Please contact the system administrator!!'
|
||
,'SYSTEM'
|
||
,'General'
|
||
,1)
|
||
GO
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
([MODULE]
|
||
,[TITLE]
|
||
,[LANGUAGE]
|
||
,[CAPT_TYPE]
|
||
,[STRING1]
|
||
,[STRING2]
|
||
,[ADDED_WHO]
|
||
,[OBJ_NAME]
|
||
,[INTERNAL])
|
||
VALUES
|
||
('All Modules'
|
||
,'No Module Configuration'
|
||
,'de-DE'
|
||
,'Information'
|
||
,'Achtung: Sie sind nicht f<>r die Nutzung von ProcessManager freigegeben!'
|
||
,'Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!!'
|
||
,'SYSTEM'
|
||
,'General'
|
||
,1)
|
||
GO
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
([MODULE]
|
||
,[TITLE]
|
||
,[LANGUAGE]
|
||
,[CAPT_TYPE]
|
||
,[STRING1]
|
||
,[STRING2]
|
||
,[ADDED_WHO]
|
||
,[OBJ_NAME]
|
||
,[INTERNAL])
|
||
VALUES
|
||
('All Modules'
|
||
,'No Module Configuration'
|
||
,'en-US'
|
||
,'Information'
|
||
,'Achtung: Sie sind nicht f<>r die Nutzung von ProcessManager freigegeben!'
|
||
,'Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!!'
|
||
,'SYSTEM'
|
||
,'General'
|
||
,1)
|
||
GO
|
||
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2,INTERNAL)
|
||
VALUES('Application','PM','App.ReminderPipeline','de-DE','Information','Es befinden sich noch unerledigte Aufgaben in Ihrem Verantwortungsbereich','',1);
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
(OBJ_NAME,[MODULE],[TITLE],[LANGUAGE],[CAPT_TYPE],[STRING1],STRING2,INTERNAL)
|
||
VALUES('Application','PM','App.ReminderPipeline','en-US','Information','There are some tasks in your responsibility!','',1);
|
||
GO
|
||
Insert Into TBDD_GUI_LANGUAGE_PHRASE (MODULE,TITLE,LANGUAGE,CAPT_TYPE,STRING1,STRING2,OBJ_NAME) VALUES ('PM','frmValidator.Conversation_Delete','de-DE','MsgboxResult','Wollen Sie die Konversation beenden?','Nachfrage','frmValidator');
|
||
Insert Into TBDD_GUI_LANGUAGE_PHRASE (MODULE,TITLE,LANGUAGE,CAPT_TYPE,STRING1,STRING2,OBJ_NAME) VALUES ('PM','frmValidator.Conversation_Delete','en-US','MsgboxResult','Would You like to end this conversation?','Question','frmValidator');
|
||
GO
|
||
CREATE TABLE [dbo].[TBDD_MONITORING_RESULT](
|
||
[USR_ID] INTEGER NULL,
|
||
[GUID] INTEGER NULL,
|
||
[PARENT_ID] INTEGER NULL,
|
||
[STATE] VARCHAR(100) DEFAULT 'DEFAULT',
|
||
[ICON] VARCHAR(100) NULL,
|
||
[COLUMN1] VARCHAR(500) NULL,
|
||
[COLUMN2] VARCHAR(500) NULL,
|
||
[COLUMN3] VARCHAR(500) NULL,
|
||
[ADDED_WHEN] DATETIME NULL,
|
||
[SELECT1] NVARCHAR(max) NULL,
|
||
[SELECT2] NVARCHAR(max) NULL,
|
||
[SELECT3] NVARCHAR(max) NULL,
|
||
[SELECT4] NVARCHAR(max) NULL,
|
||
[DOCVIEW1] NVARCHAR(512) NULL,
|
||
[DOCVIEW2] NVARCHAR(512) NULL,
|
||
[HTML1] NVARCHAR(max) NULL,
|
||
[HTML2] NVARCHAR(max) NULL
|
||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||
|
||
GO
|
||
--PROCEDURES
|
||
|
||
-- 20.09.2024 MS @MODULE_SHORT eingesetzt
|
||
CREATE OR ALTER PROCEDURE [dbo].[PRDD_CHECK_REL_DOCTYPE_MODULE] (@MODULE_SHORT VARCHAR(20),@DOCTYPE_ID INTEGER)
|
||
AS
|
||
DECLARE @MODULEID INTEGER
|
||
SELECT @MODULEID = GUID FROM TBDD_MODULES WHERE SHORT_NAME = @MODULE_SHORT
|
||
GO
|
||
CREATE PROCEDURE [dbo].[PRDD_MONITORING_GET_TREEVIEW_RESULT] @TYPE VARCHAR(100),@PARAM1 NVARCHAR(500),@PARAM2 NVARCHAR(500),@PARAM3 NVARCHAR(500),@USR_ID INTEGER
|
||
AS
|
||
BEGIN
|
||
DECLARE @TBResult TABLE (
|
||
GUID INTEGER,
|
||
PARENT_ID INTEGER,
|
||
--
|
||
-- STATE
|
||
-- Options: SUCCESS, FAILURE, WARNING, WAITING, DEFAULT
|
||
--
|
||
STATE VARCHAR(100) DEFAULT 'DEFAULT',
|
||
--
|
||
-- ICON
|
||
-- Options: MAIL, PDF, HTML
|
||
--
|
||
ICON VARCHAR(100),
|
||
COLUMN1 VARCHAR(500),
|
||
COLUMN2 VARCHAR(500),
|
||
COLUMN3 VARCHAR(500),
|
||
ADDED_WHEN DATETIME,
|
||
SELECT1 NVARCHAR(MAX),
|
||
SELECT2 NVARCHAR(MAX),
|
||
SELECT3 NVARCHAR(MAX),
|
||
SELECT4 NVARCHAR(MAX),
|
||
DOCVIEW1 NVARCHAR(512),
|
||
DOCVIEW2 NVARCHAR(512),
|
||
HTML1 NVARCHAR(MAX),
|
||
HTML2 NVARCHAR(MAX)
|
||
)
|
||
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ADDED_WHEN,COLUMN1,STATE) VALUES (1,0,GETDATE()-10,'EMAIL-EINGANG','SUCCESS')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,COLUMN1,COLUMN2) VALUES (2,1,'Datum/Uhrzeit','2021-05-11 07:28:25')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,COLUMN1,COLUMN2) VALUES (3,1,'Email-Versender','m.schreiber@digitaldata.works')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,COLUMN1,COLUMN2) VALUES (4,1,'Betreff','Das Subject aus der Mail')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ADDED_WHEN,COLUMN1,STATE) VALUES (5,0,GETDATE()-8,'ZUGFeRD-Parser gestartet','SUCCESS')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ICON,COLUMN1,SELECT1) VALUES (6,5,'SQL','Click for Result','SELECT * FROM TBEDMI_ITEM_VALUE WHERE REFERENCE_GUID = ''350614162.18783.1593150528181@W2K8SRV0036030008840''|EDMI_ITEM_VALUE')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ICON,COLUMN1,DOCVIEW1) VALUES (7,5,'MAIL','OriginalMail','\\Windream\Objects\SWE_157906_Neggers~4-21_01_28.msg|Original Email')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ADDED_WHEN,COLUMN1,STATE) VALUES (8,5,GETDATE()-6,'Beleg Abgelehnt','WARNING')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ICON,COLUMN1,HTML1) VALUES (9,8,'MAIL','Ablehnungsmail','<!DOCTYPE html><html><body style=''font-family:"Arial";font-size:10.0pt''">Sehr geehrte Damen und Herren,<br> das WISAG-Portal zur Verarbeitung der Eingangsrechnungen
|
||
im ZUGFeRD-Format konnte die von Ihnen gesandte Rechnung 5403008595 leider nicht verarbeiten! <br> Letzter Bearbeiter in unserem Hause: Melanie Leilich - Melanie.Leilich@wisag.de <p>
|
||
Ablehnung, da die Rechnung mit der Gutschrift 5403008596 verrechnet wird.<br> Letzter Bearbeiter in unserem Hause: Melanie Leilich<p>Bitte pr<70>fen Sie die Datei und nehmen Sie bei Bedarf mit uns Kontakt auf. <p>
|
||
Vielen Dank f<>r Ihr Verst<73>ndnis.<br>Mit freundlichen Gr<47><72>en<br>Ihre IT-Abteilung</body></html>|Ablehnungsmail')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ADDED_WHEN,COLUMN1,STATE) VALUES (10,0,GETDATE()-5,'Finale Freigabe','SUCCESS')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,COLUMN1,COLUMN2) VALUES (11,10,'Finaler Freigaber','d.schipper')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ADDED_WHEN,COLUMN1,STATE) VALUES (12,0,GETDATE()-5,'Ergebnisbericht erzeugt','SUCCESS')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ICON,COLUMN1,DOCVIEW1) VALUES (13,12,'FILE','Ergebnisbericht','\\Windream\Objects\fileFLOW-Test\4-20_06_08~8.pdf|Ergebnisbericht')
|
||
INSERT INTO @TBResult (GUID,PARENT_ID,ADDED_WHEN,COLUMN1,STATE) VALUES (14,0,GETDATE()-4,'An SAP <20>bergeben','WAITING')
|
||
|
||
SELECT * FROM @TBResult
|
||
END
|
||
GO
|
||
|
||
CREATE TABLE TBDD_MONITORING_PROFILE(
|
||
GUID INTEGER NOT NULL IDENTITY(1,1),
|
||
TITLE VARCHAR(30) NOT NULL,
|
||
DESCRIPTION VARCHAR(100),
|
||
ACTIVE BIT NOT NULL DEFAULT 1,
|
||
SEQUENCE TINYINT NOT NULL DEFAULT 1,
|
||
ADDED_WHEN DATETIME NOT NULL DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT [PK_TBDD_MONITORING_PROFILE] PRIMARY KEY(GUID))
|
||
GO
|
||
|
||
CREATE TRIGGER [dbo].[TBDD_MONITORING_PROFILE_AFT_UPD] ON [dbo].[TBDD_MONITORING_PROFILE]
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_MONITORING_PROFILE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_MONITORING_PROFILE.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_MONITORING_PROFILE_ATTRIBUTES(
|
||
GUID INTEGER NOT NULL IDENTITY(1,1),
|
||
MONITOR_PROFILE_ID INTEGER NOT NULL,
|
||
[CAPTION] VARCHAR(100) NOT NULL,
|
||
DESCRIPTION VARCHAR(100),
|
||
ACTIVE BIT NOT NULL DEFAULT 1,
|
||
SEQUENCE TINYINT NOT NULL DEFAULT 1,
|
||
ADDED_WHEN DATETIME NOT NULL DEFAULT GETDATE(),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT [PK_TBDD_MONITORING_PROFILE_ATTRIBUTES] PRIMARY KEY(GUID),
|
||
CONSTRAINT FK_TBDD_MONITORING_PROF_ATTR_MPID FOREIGN KEY (MONITOR_PROFILE_ID) REFERENCES TBDD_MONITORING_PROFILE (GUID))
|
||
GO
|
||
|
||
CREATE TRIGGER [dbo].[TBDD_MONITORING_PROFILE_ATTRIBUTES_AFT_UPD] ON [dbo].TBDD_MONITORING_PROFILE_ATTRIBUTES
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
UPDATE TBDD_MONITORING_PROFILE_ATTRIBUTES SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_MONITORING_PROFILE_ATTRIBUTES.GUID = INSERTED.GUID
|
||
END
|
||
GO
|
||
--############################################
|
||
--##########PROCEDURES########################
|
||
--############################################
|
||
|
||
CREATE PROCEDURE [dbo].[PRDD_DELETE_USER](@pUSER_ID INT)
|
||
AS
|
||
BEGIN TRY
|
||
-- COMMON
|
||
IF OBJECT_ID(N'dbo.TBDD_USER_MODULES', N'U') IS NOT NULL
|
||
DELETE FROM TBDD_USER_MODULES WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBDD_CLIENT_USER', N'U') IS NOT NULL
|
||
DELETE FROM TBDD_CLIENT_USER WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBDD_GROUPS_USER', N'U') IS NOT NULL
|
||
DELETE FROM TBDD_GROUPS_USER WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBDD_VERSION_USER_UPDATE', N'U') IS NOT NULL
|
||
DELETE FROM TBDD_VERSION_USER_UPDATE WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBDD_VERSION_USER_UPDATE_PATH', N'U') IS NOT NULL
|
||
DELETE FROM TBDD_VERSION_USER_UPDATE_PATH WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBDD_USER_LOGIN_OUT', N'U') IS NOT NULL
|
||
DELETE FROM TBDD_USER_LOGIN_OUT WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBDD_USER_MODULE_LOG_IN', N'U') IS NOT NULL
|
||
DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = @pUSER_ID
|
||
|
||
-- PROCESS MANAGER
|
||
IF OBJECT_ID(N'dbo.TBPM_PROFILE_USER', N'U') IS NOT NULL
|
||
DELETE FROM TBPM_PROFILE_USER WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBPMO_FOLDERWATCH_USER', N'U') IS NOT NULL
|
||
DELETE FROM TBPMO_FOLDERWATCH_USER WHERE USER_ID = @pUSER_ID
|
||
|
||
-- GLOBAL INDEXER
|
||
IF OBJECT_ID(N'dbo.TBGI_FOLDERWATCH_USER', N'U') IS NOT NULL
|
||
DELETE FROM TBGI_FOLDERWATCH_USER WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBHOTKEY_USER_PROFILE', N'U') IS NOT NULL
|
||
DELETE FROM TBHOTKEY_USER_PROFILE WHERE USER_ID = @pUSER_ID
|
||
-- CLIPBOARD WATCHER
|
||
IF OBJECT_ID(N'dbo.TBCW_USER_PROFILE', N'U') IS NOT NULL
|
||
DELETE FROM TBCW_USER_PROFILE WHERE USER_ID = @pUSER_ID
|
||
|
||
--_ADDI
|
||
IF OBJECT_ID(N'dbo.TBPMO_CONSTRUCTOR_USER', N'U') IS NOT NULL
|
||
DELETE FROM TBPMO_CONSTRUCTOR_USER WHERE USER_ID = @pUSER_ID
|
||
IF OBJECT_ID(N'dbo.TBPMO_USER_CONSTR_VIEW_TYPE', N'U') IS NOT NULL
|
||
DELETE FROM TBPMO_USER_CONSTR_VIEW_TYPE WHERE USER_ID = @pUSER_ID
|
||
|
||
-- FINALLY
|
||
DELETE FROM TBDD_USER WHERE GUID = @pUSER_ID
|
||
|
||
RETURN 0
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'FEHLER IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE()) + ' - ZEILE: ' + CONVERT(VARCHAR(10),ERROR_LINE())
|
||
+ ' - FEHLER-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
RETURN -1
|
||
END CATCH
|
||
GO
|
||
|
||
CREATE PROCEDURE [dbo].[PRDD_USER_REFRESH_WM_ID]
|
||
AS
|
||
DECLARE
|
||
@GUID INTEGER,
|
||
@USERNAME VARCHAR(500)
|
||
|
||
DECLARE c_REDO CURSOR FOR
|
||
select GUID,USERNAME from TBDD_USER
|
||
OPEN c_REDO
|
||
FETCH NEXT FROM c_REDO INTO @GUID,@USERNAME
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
DECLARE @ECM_USR_ID INTEGER
|
||
|
||
SELECT @ECM_USR_ID = [dwUserID] FROM @WINDREAM_DB.[dbo].[UserInfo] where UPPER(szUserName) = UPPER(@USERNAME)
|
||
IF @ECM_USR_ID IS NOT NULL
|
||
UPDATE TBDD_USER SET USERID_FK_INT_ECM = @ECM_USR_ID WHERE GUID = @GUID
|
||
|
||
FETCH NEXT FROM c_REDO INTO @GUID,@USERNAME
|
||
END
|
||
CLOSE c_REDO
|
||
DEALLOCATE c_REDO
|
||
GO
|
||
CREATE TABLE TBDD_EXTATTRIBUTES_MATCHING
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
EXT_ATTRIBUTE VARCHAR(250),
|
||
TBDD_USER_COLUMN VARCHAR(150),
|
||
FB_SYS_KEY VARCHAR(150) DEFAULT ''
|
||
CONSTRAINT PK_TBAD_EXTATTRIBUTES_MATCHING_GUID PRIMARY KEY(GUID)
|
||
)
|
||
GO
|
||
CREATE TABLE TBDD_NOTIFICATIONS_SYSTEM
|
||
(
|
||
GUID INTEGER NOT NULL IDENTITY (1, 1),
|
||
TITLE VARCHAR(250) NOT NULL,
|
||
MODULE VARCHAR(250) NOT NULL,
|
||
DISPLAY_TYPE VARCHAR(100) NOT NULL,
|
||
MSG_STRING NVARCHAR(MAX) NOT NULL,
|
||
LANG_CODE VARCHAR(5) NOT NULL DEFAULT 'ALL',
|
||
DISPLAY_UNTIL DATE,
|
||
VALIDATE_READ BIT NOT NULL DEFAULT 0,
|
||
ADDED_WHO VARCHAR(100),
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CHANGED_WHO VARCHAR(100),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_NOTIFICATIONS_SYSTEM PRIMARY KEY (GUID),
|
||
)
|
||
GO
|
||
CREATE TRIGGER TTBDD_NOTIFICATIONS_SYSTEM_AFT_UPD ON TBDD_NOTIFICATIONS_SYSTEM
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_NOTIFICATIONS_SYSTEM SET CHANGED_WHEN = GETDATE()
|
||
FROM INSERTED
|
||
WHERE TBDD_NOTIFICATIONS_SYSTEM .GUID = INSERTED.GUID
|
||
GO
|
||
|
||
CREATE TABLE TBDD_NOTIFICATIONS_USER_HISTORY
|
||
(
|
||
GUID INTEGER IDENTITY(1,1),
|
||
NOTIFY_ID INT NOT NULL,
|
||
USR_ID INT NOT NULL,
|
||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||
CONSTRAINT PK_TBDD_NOTIFICATIONS_USER_HISTORY PRIMARY KEY (GUID),
|
||
CONSTRAINT FK_TBDD_NOTIFICATIONS_USER_HISTORY_NID FOREIGN KEY(NOTIFY_ID) REFERENCES TBDD_NOTIFICATIONS_SYSTEM(GUID),
|
||
)
|
||
GO
|
||
--###### VIEWS #####
|
||
CREATE VIEW [dbo].[VWDD_WM_ACCESS_RIGHTS_GROUP] AS
|
||
SELECT AR.dwObjectID,
|
||
UG.dwUserOrGROUPID,
|
||
AR.dwAccessRight,
|
||
AR.dwObjectDBID
|
||
FROM @WINDREAM_DB.dbo.AccessRight AR LEFT JOIN @WINDREAM_DB.dbo.UserGroup UG ON AR.dwUserOrGroupID = UG.dwGroupID
|
||
INNER JOIN TBDD_USER TU ON UG.dwUserOrGroupID = TU.USERID_FK_INT_ECM
|
||
WHERE UG.dwUserOrGroupID IS NOT NULL
|
||
GO
|
||
CREATE VIEW [dbo].[VWDD_WM_ACCESS_RIGHTS_USER] AS
|
||
SELECT AR.dwObjectID,
|
||
AR.dwUserOrGROUPID,
|
||
AR.dwAccessRight,
|
||
AR.dwObjectDBID
|
||
FROM @WINDREAM_DB.dbo.AccessRight AR LEFT JOIN @WINDREAM_DB.dbo.UserGroup UG ON AR.dwUserOrGroupID = UG.dwGroupID
|
||
INNER JOIN TBDD_USER TU ON AR.dwUserOrGroupID = TU.USERID_FK_INT_ECM
|
||
WHERE UG.dwUserOrGroupID IS NULL
|
||
GO
|
||
|
||
CREATE VIEW [dbo].[VWDD_WM_ACCESS_RIGHTS] AS
|
||
SELECT ARU.dwObjectID,
|
||
ARU.dwUserOrGROUPID,
|
||
ARU.dwAccessRight,
|
||
ARU.dwObjectDBID
|
||
FROM VWDD_WM_ACCESS_RIGHTS_USER ARU UNION
|
||
SELECT ARG.dwObjectID,
|
||
ARG.dwUserOrGROUPID,
|
||
ARG.dwAccessRight,
|
||
ARG.dwObjectDBID
|
||
FROM VWDD_WM_ACCESS_RIGHTS_GROUP ARG
|
||
GO
|
||
|
||
CREATE VIEW [dbo].[VWDD_CUST_USER_LAST30Days] as
|
||
SELECT DISTINCT USER_ID
|
||
--Count(USER_ID), MONTH()
|
||
FROM TBDD_USER_LOGIN_OUT WHERE UPPER(MODULE) = UPPER('Process-Manager') and DATEDIFF(DAY,LOGIN,GETDATE()) <= 90
|
||
GO
|
||
|
||
CREATE VIEW VWDD_LOGIN_USER_HISTORY AS
|
||
SELECT TOP (5000)
|
||
T.GUID,
|
||
T.MODULE,
|
||
T1.USERNAME,
|
||
T1.NAME,
|
||
T1.PRENAME,
|
||
T1.GUID as USER_ID,
|
||
T.CLIENT_ID,
|
||
T2.CLIENT_NAME,
|
||
T.LOGIN,
|
||
T.LOGOUT,
|
||
T.VERSION_CLIENT,
|
||
T.MACHINE_NAME
|
||
FROM
|
||
TBDD_USER_LOGIN_OUT T,
|
||
TBDD_USER T1,
|
||
TBDD_CLIENT T2
|
||
WHERE
|
||
T.USER_ID = T1.GUID
|
||
AND T.CLIENT_ID = T2.GUID
|
||
ORDER BY GUID DESC
|
||
GO
|
||
CREATE VIEW VWDD_USER2GROUP AS
|
||
SELECT TOP 100 PERCENT T.GUID, T.USERNAME, T2.GUID as GROUP_ID, T2.NAME, T2.COMMENT
|
||
FROM TBDD_USER T, TBDD_GROUPS_USER T1, TBDD_GROUPS T2
|
||
WHERE
|
||
T.GUID = T1.USER_ID AND
|
||
T1.GROUP_ID = T2.GUID
|
||
ORDER BY T.USERNAME
|
||
GO
|
||
CREATE VIEW VWDDINDEX_MAN
|
||
AS
|
||
SELECT TOP 2000
|
||
T.GUID,
|
||
T.NAME INDEXNAME,
|
||
T.WD_INDEX,
|
||
T.COMMENT,
|
||
T.DATATYPE,
|
||
T.DOK_ID,
|
||
T1.BEZEICHNUNG DOKUMENTART,
|
||
T1.KURZNAME,
|
||
T.SUGGESTION,
|
||
T.CONNECTION_ID,
|
||
T2.BEZEICHNUNG CONNECTION,
|
||
T2.SQL_PROVIDER,
|
||
T2.SERVER,
|
||
T2.DATENBANK,
|
||
T2.USERNAME,
|
||
T2.PASSWORD,
|
||
T.SQL_RESULT,
|
||
T.SQL_CHECK,
|
||
T.OPTIONAL,
|
||
T.SAVE_VALUE,
|
||
T.DEFAULT_VALUE,
|
||
T.MULTISELECT,
|
||
T.SEQUENCE
|
||
|
||
FROM
|
||
TBDD_INDEX_MAN T
|
||
INNER JOIN TBDD_DOKUMENTART T1 ON T.DOK_ID = T1.GUID AND T1.AKTIV = 1
|
||
LEFT JOIN TBDD_CONNECTION T2 ON T.CONNECTION_ID = T2.GUID AND T2.AKTIV = 1
|
||
WHERE
|
||
T.ACTIVE = 1
|
||
ORDER BY
|
||
T.DOK_ID,
|
||
T.GUID
|
||
GO
|
||
|
||
CREATE VIEW [dbo].[VWDDINDEX_AUTOM]
|
||
AS
|
||
SELECT TOP 100 PERCENT
|
||
T.GUID,
|
||
T.INDEXNAME,
|
||
T.COMMENT,
|
||
T.DOCTYPE_ID,
|
||
T1.BEZEICHNUNG DOKUMENTART,
|
||
T1.KURZNAME,
|
||
T.CONNECTION_ID,
|
||
T2.BEZEICHNUNG CONNECTION,
|
||
T2.SQL_PROVIDER,
|
||
T2.SERVER,
|
||
T2.DATENBANK,
|
||
T2.USERNAME,
|
||
T2.PASSWORD,
|
||
T.SQL_RESULT,
|
||
T.SQL_ACTIVE,
|
||
T.VALUE,
|
||
T.[SEQUENCE],
|
||
T.VKT_OVERWRITE,
|
||
T.VKT_PREVENT_MULTIPLE_VALUES
|
||
FROM
|
||
TBDD_INDEX_AUTOM T
|
||
INNER JOIN TBDD_DOKUMENTART T1 ON T.DOCTYPE_ID = T1.GUID AND T1.AKTIV = 1
|
||
LEFT JOIN TBDD_CONNECTION T2 ON T.CONNECTION_ID = T2.GUID AND T2.AKTIV = 1
|
||
WHERE
|
||
T.ACTIVE = 1
|
||
ORDER BY
|
||
T.DOCTYPE_ID,
|
||
T.GUID
|
||
|
||
GO
|
||
|
||
CREATE VIEW VWDDINDICES_MAN_AUTO_ACTIVE AS
|
||
SELECT TOP 100 PERCENT
|
||
DOK_ID AS DOCTYPE_ID,
|
||
'm' + NAME AS NAME
|
||
FROM TBDD_INDEX_MAN WHERE ACTIVE = 1
|
||
UNION
|
||
SELECT TOP 100 PERCENT
|
||
DOCTYPE_ID AS DOCTYPE_ID,
|
||
'a' + INDEXNAME AS NAME
|
||
FROM TBDD_INDEX_AUTOM WHERE ACTIVE = 1
|
||
ORDER BY
|
||
DOCTYPE_ID
|
||
GO
|
||
CREATE VIEW VWDD_USER_CLIENT
|
||
AS
|
||
SELECT
|
||
T1.GUID AS CLIENT_ID
|
||
,T1.CLIENT_NAME
|
||
,T.USER_ID
|
||
,T2.USERNAME
|
||
FROM
|
||
TBDD_CLIENT_USER T
|
||
,TBDD_CLIENT T1
|
||
,TBDD_USER T2
|
||
WHERE
|
||
T1.ACTIVE = 1
|
||
AND T.CLIENT_ID = T1.GUID
|
||
AND T.USER_ID = T2.GUID
|
||
|
||
GO
|
||
--####Functions
|
||
|
||
-- [FNDD_CONVERT_RTF2Text]
|
||
-- =================================================================
|
||
-- Converts a RTF text to a regular text
|
||
--
|
||
-- Returns: NVARCHAR - text
|
||
-- =================================================================
|
||
-- Copyright (c) 2024 by Digital Data GmbH
|
||
--
|
||
-- Digital Data GmbH <20> Ludwig-Rinn-Strasse 16 <20> D-35452 Heuchelheim
|
||
-- Tel.: 0641/202360 <20> E-Mail: info-flow@digitaldata.works
|
||
-- =================================================================
|
||
-- Creation Date / Author: 26.09.2024 / HE,MK
|
||
-- Version Date / Editor: 14.12.2024 / HE,MK
|
||
-- Version Number: 1.1.0.0
|
||
-- =================================================================
|
||
-- History:
|
||
-- 26.09.2024 / HE,MK - First Version
|
||
-- 14.12.2024 / MK - code optimisation, new additional parameters
|
||
|
||
CREATE OR ALTER FUNCTION [dbo].[FNDD_CONVERT_RTF2Text](
|
||
@pRTF nvarchar(max), -- Give the RTF text, you want to convert
|
||
@pREMOVE_LINE_WRAP BIT = 1, -- Set to 1 to remove line wraps
|
||
@pREMOVE_DOUBLE_BLANKS BIT = 1 -- Set to 1 to remove unnecessary blanks
|
||
)
|
||
RETURNS nvarchar(max)
|
||
AS
|
||
BEGIN
|
||
|
||
-- decalare new vars because of parameter sniffing
|
||
DECLARE @RTF NVARCHAR(256) = ISNULL(@pRTF,''),
|
||
@REMOVE_LINE_WRAP BIT = ISNULL(@pREMOVE_LINE_WRAP,1),
|
||
@REMOVE_DOUBLE_BLANKS BIT = ISNULL(@pREMOVE_DOUBLE_BLANKS,1);
|
||
|
||
-- decalare runtime vars
|
||
DECLARE @Pos1 int,
|
||
@Pos2 int,
|
||
@hex varchar(316);
|
||
|
||
DECLARE @Stage table ([Char] char(1), [Pos] int);
|
||
|
||
IF (LEN(@RTF) > 1) BEGIN
|
||
|
||
INSERT @Stage ([Char], [Pos])
|
||
|
||
SELECT SUBSTRING(@rtf, [Number], 1),
|
||
[Number]
|
||
FROM [master]..[spt_values]
|
||
WHERE ([Type] = 'p')
|
||
AND (SUBSTRING(@rtf, Number, 1) IN ('{', '}'));
|
||
|
||
SELECT @Pos1 = MIN([Pos])
|
||
, @Pos2 = MAX([Pos])
|
||
FROM @Stage;
|
||
|
||
DELETE
|
||
FROM @Stage
|
||
WHERE ([Pos] IN (@Pos1, @Pos2));
|
||
|
||
WHILE (1 = 1) BEGIN
|
||
SELECT TOP 1 @Pos1 = s1.[Pos]
|
||
, @Pos2 = s2.[Pos]
|
||
FROM @Stage s1
|
||
INNER JOIN @Stage s2 ON s2.[Pos] > s1.[Pos]
|
||
WHERE (s1.[Char] = '{')
|
||
AND (s2.[Char] = '}')
|
||
ORDER BY s2.[Pos] - s1.[Pos];
|
||
|
||
IF @@ROWCOUNT = 0
|
||
BREAK
|
||
|
||
DELETE
|
||
FROM @Stage
|
||
WHERE ([Pos] IN (@Pos1, @Pos2));
|
||
|
||
UPDATE @Stage
|
||
SET [Pos] = [Pos] - @Pos2 + @Pos1 - 1
|
||
WHERE ([Pos] > @Pos2);
|
||
|
||
SET @rtf = STUFF(@rtf, @Pos1, @Pos2 - @Pos1 + 1, '');
|
||
END;
|
||
|
||
SET @rtf = REPLACE(@rtf, '\pard', '');
|
||
SET @rtf = REPLACE(@rtf, '\par', '');
|
||
SET @rtf = STUFF(@rtf, 1, CHARINDEX(' ', @rtf), '');
|
||
|
||
WHILE (Right(@rtf, 1) IN (' ', CHAR(13), CHAR(10), '}')) BEGIN
|
||
SELECT @rtf = SUBSTRING(@rtf, 1, (LEN(@rtf + 'x') - 2));
|
||
IF LEN(@rtf) = 0 BREAK
|
||
END;
|
||
|
||
SET @Pos1 = CHARINDEX('\''', @rtf);
|
||
|
||
WHILE (@Pos1 > 0) BEGIN
|
||
IF (@Pos1 > 0) BEGIN
|
||
SET @hex = '0x' + SUBSTRING(@rtf, @Pos1 + 2, 2);
|
||
SET @rtf = REPLACE(@rtf, SUBSTRING(@rtf, @Pos1, 4),CHAR(CONVERT(int, CONVERT (binary(1), @hex,1))));
|
||
SET @Pos1 = CHARINDEX('\''', @rtf);
|
||
END;
|
||
END;
|
||
|
||
SET @rtf = @rtf + ' ';
|
||
SET @Pos1 = PATINDEX('%\%[0123456789][\ ]%', @rtf);
|
||
|
||
WHILE (@Pos1 > 0) BEGIN
|
||
|
||
SET @Pos2 = CHARINDEX(' ', @rtf, @Pos1 + 1);
|
||
|
||
IF (@Pos2 < @Pos1) BEGIN
|
||
SET @Pos2 = CHARINDEX('\', @rtf, @Pos1 + 1);
|
||
END;
|
||
|
||
IF (@Pos2 < @Pos1) BEGIN
|
||
SET @rtf = SUBSTRING(@rtf, 1, @Pos1 - 1);
|
||
SET @Pos1 = 0;
|
||
END; ELSE BEGIN
|
||
SET @rtf = STUFF(@rtf, @Pos1, @Pos2 - @Pos1 + 1, '');
|
||
SET @Pos1 = PATINDEX('%\%[0123456789][\ ]%', @rtf);
|
||
END;
|
||
END;
|
||
|
||
IF (@REMOVE_LINE_WRAP = 1) BEGIN
|
||
SET @rtf = REPLACE(@rtf,char(10),' ');
|
||
SET @rtf = REPLACE(@rtf,char(13),' ');
|
||
END;
|
||
|
||
IF (@REMOVE_DOUBLE_BLANKS = 1) BEGIN
|
||
WHILE (@rtf like '% %') BEGIN
|
||
IF (@rtf like '% %') BEGIN
|
||
SET @rtf = REPLACE(@rtf,' ',' ');
|
||
END;
|
||
END;
|
||
END;
|
||
|
||
-- Anyway remove trailing spaces
|
||
SET @rtf = LTRIM(RTRIM(@rtf));
|
||
|
||
END;
|
||
|
||
RETURN @rtf;
|
||
|
||
END;
|
||
GO
|
||
|
||
-- [FNDD_GET_WINDREAM_CHOICELIST_ITEMS]
|
||
-- =================================================================
|
||
-- Reads the windream database choice list and gives the
|
||
-- choice list items
|
||
--
|
||
-- Returns: Table (1 column)
|
||
-- =================================================================
|
||
-- Copyright (c) 2024 by Digital Data GmbH
|
||
--
|
||
-- Digital Data GmbH <20> Ludwig-Rinn-Strasse 16 <20> D-35452 Heuchelheim
|
||
-- Tel.: 0641/202360 <20> E-Mail: info-flow@digitaldata.works
|
||
-- =================================================================
|
||
-- Creation Date / Author: 13.12.2024 / MK
|
||
-- Version Date / Editor: 13.12.2024 / MK
|
||
-- Version Number: 1.0.0.0
|
||
-- =================================================================
|
||
-- History:
|
||
-- 13.12.2024 / MK - First Version
|
||
|
||
CREATE OR ALTER FUNCTION [dbo].[FNDD_GET_WINDREAM_CHOICELIST_ITEMS] (
|
||
@szListName NVARCHAR(255)
|
||
)
|
||
RETURNS TABLE
|
||
AS
|
||
RETURN
|
||
|
||
SELECT TOP (100) PERCENT [szValue] as 'Auswahlliste'
|
||
FROM [windreamDB].[dbo].[ChoiceListItem]
|
||
WHERE [dwChoiceListID] = (SELECT [dwChoiceListID] FROM [windreamDB].[dbo].[ChoiceList] WHERE [szListName] = @szListName)
|
||
AND LEN([szValue]) > 0
|
||
ORDER BY [Auswahlliste] ASC
|
||
GO
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- [FNDD_GET_WINDREAM_INDEX_VALUES]
|
||
-- =================================================================
|
||
-- Reads the windream database attributes to gives the index value
|
||
-- of a regular index or a vector index
|
||
--
|
||
-- Returns: Table (7 columns)
|
||
-- =================================================================
|
||
-- Copyright (c) 2024 by Digital Data GmbH
|
||
--
|
||
-- Digital Data GmbH <20> Ludwig-Rinn-Strasse 16 <20> D-35452 Heuchelheim
|
||
-- Tel.: 0641/202360 <20> E-Mail: info-flow@digitaldata.works
|
||
-- =================================================================
|
||
-- Creation Date / Author: 13.12.2024 / MK
|
||
-- Version Date / Editor: 13.12.2024 / MK
|
||
-- Version Number: 1.0.0.0
|
||
-- =================================================================
|
||
-- History:
|
||
-- 13.12.2024 / MK - First Version
|
||
|
||
|
||
CREATE OR ALTER FUNCTION [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES] (
|
||
@pdwDocID BIGINT, -- Give windream DocID, eg. 4711
|
||
@pszAttrName NVARCHAR(255) -- Give name of the windream Index, eg 'String 37'
|
||
)
|
||
RETURNS @Table TABLE ([COUNTER] BIGINT IDENTITY(1, 1), [COUNT] BIGINT, [VALUE] NVARCHAR(max), [SOURCE_TYPE] NVARCHAR(50), [SOURCE_TABLE] NVARCHAR(50), [SOURCE_COLUMN] NVARCHAR(50), [SOURCE_COLUMN_SIZE] INT)
|
||
AS
|
||
BEGIN
|
||
|
||
DECLARE @dwDocID BIGINT = @pdwDocID,
|
||
@szAttrName NVARCHAR(255) = @pszAttrName;
|
||
|
||
DECLARE @VectorCount INT = 0,
|
||
@dwAttrSize INT = 0,
|
||
@dwAttrID BIGINT = 0,
|
||
@dwAttrType BIGINT = 0,
|
||
@szTableName NVARCHAR(255) = NULL,
|
||
@szColumnName NVARCHAR(255) = NULL;
|
||
|
||
DECLARE @Attribute TABLE ([dwAttrID] BIGINT, [dwAttrType] BIGINT, [szTableName] NVARCHAR(255), [szColumnName] NVARCHAR(255), [dwAttrSize] INT);
|
||
------------------------------------------------------------------------------------------------------------
|
||
|
||
INSERT INTO @Attribute ([dwAttrID], [dwAttrType], [szTableName], [szColumnName], [dwAttrSize])
|
||
SELECT TOP 1 [dwAttrID], [dwAttrType], [szTableName], [szColumnName], [dwAttrSize]
|
||
FROM [windreamDB].[dbo].[Attribute] (NOLOCK) WHERE [szAttrName] = @szAttrName;
|
||
------------------------------------------------------------------------------------------------------------
|
||
|
||
IF ((SELECT COUNT(*) FROM @Attribute) > 0) BEGIN
|
||
|
||
SELECT @dwAttrID = [dwAttrID],
|
||
@dwAttrType = [dwAttrType],
|
||
@szTableName = [szTableName],
|
||
@szColumnName = [szColumnName],
|
||
@dwAttrSize = [dwAttrSize]
|
||
FROM @Attribute;
|
||
------------------------------------------------------------------------------------------------------------
|
||
|
||
IF ((@dwAttrID > 0) and (@dwAttrType > 0) and (LEN(@szTableName) > 0) and (LEN(@szColumnName) > 0)) BEGIN
|
||
|
||
IF (@szTableName = 'BaseAttributes') BEGIN
|
||
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT
|
||
COUNT(*),
|
||
CASE
|
||
WHEN @szColumnName = 'dwDocID' THEN (SELECT CONVERT(NVARCHAR,[dwDocID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDocDBID' THEN (SELECT CONVERT(NVARCHAR,[dwDocDBID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwParentID' THEN (SELECT CONVERT(NVARCHAR,[dwParentID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwParentDBID' THEN (SELECT CONVERT(NVARCHAR,[dwParentDBID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwObjectTypeID' THEN (SELECT CONVERT(NVARCHAR,[dwObjectTypeID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwObjectTypeDBID' THEN (SELECT CONVERT(NVARCHAR,[dwObjectTypeDBID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwCatalogID' THEN (SELECT CONVERT(NVARCHAR,[dwCatalogID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwCreatorID' THEN (SELECT CONVERT(NVARCHAR,[dwCreatorID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szCreatorName' THEN (SELECT CONVERT(NVARCHAR,[szCreatorName]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwVersionNumber' THEN (SELECT CONVERT(NVARCHAR,[dwVersionNumber]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwVersionID' THEN (SELECT CONVERT(NVARCHAR,[dwVersionID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szLongName' THEN (SELECT CONVERT(NVARCHAR,[szLongName]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szUpperLongName' THEN (SELECT CONVERT(NVARCHAR,[szUpperLongName]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szShortName' THEN (SELECT CONVERT(NVARCHAR,[szShortName]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szUpperShortName' THEN (SELECT CONVERT(NVARCHAR,[szUpperShortName]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwSize' THEN (SELECT CONVERT(NVARCHAR,[dwSize]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'decCreationTime' THEN (SELECT CONVERT(NVARCHAR,[decCreationTime]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'decAccessTime' THEN (SELECT CONVERT(NVARCHAR,[decAccessTime]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'decChangedTime' THEN (SELECT CONVERT(NVARCHAR,[decChangedTime]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwChangeCount' THEN (SELECT CONVERT(NVARCHAR,[dwChangeCount]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwFSFlags' THEN (SELECT CONVERT(NVARCHAR,[dwFSFlags]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwFlags' THEN (SELECT CONVERT(NVARCHAR,[dwFlags]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwOwnerID' THEN (SELECT CONVERT(NVARCHAR,[dwOwnerID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwOwnerDBID' THEN (SELECT CONVERT(NVARCHAR,[dwOwnerDBID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwWorkLockUserID' THEN (SELECT CONVERT(NVARCHAR,[dwWorkLockUserID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwWorkLockUserDBID' THEN (SELECT CONVERT(NVARCHAR,[dwWorkLockUserDBID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwFlags2' THEN (SELECT CONVERT(NVARCHAR,[dwFlags2]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwUserFlags' THEN (SELECT CONVERT(NVARCHAR,[dwUserFlags]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwEditDate' THEN (SELECT CONVERT(NVARCHAR,[dwEditDate]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwArchiveDate' THEN (SELECT CONVERT(NVARCHAR,[dwArchiveDate]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwEditPeriod' THEN (SELECT CONVERT(NVARCHAR,[dwEditPeriod]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwArchivePeriod' THEN (SELECT CONVERT(NVARCHAR,[dwArchivePeriod]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szReference' THEN (SELECT CONVERT(NVARCHAR,[szReference]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwCreationDate' THEN (SELECT CONVERT(NVARCHAR,[dwCreationDate]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwChangeDate' THEN (SELECT CONVERT(NVARCHAR,[dwChangeDate]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwTypeAssignDate' THEN (SELECT CONVERT(NVARCHAR,[dwTypeAssignDate]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwCreation_Time' THEN (SELECT CONVERT(NVARCHAR,[dwCreation_Time]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwChange_Time' THEN (SELECT CONVERT(NVARCHAR,[dwChange_Time]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwTypeAssign_Time' THEN (SELECT CONVERT(NVARCHAR,[dwTypeAssign_Time]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szDisplay_Name' THEN (SELECT CONVERT(NVARCHAR,[szDisplay_Name]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwAccessListID' THEN (SELECT CONVERT(NVARCHAR,[dwAccessListID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwAccessListDBID' THEN (SELECT CONVERT(NVARCHAR,[dwAccessListDBID]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szFile_Ext' THEN (SELECT CONVERT(NVARCHAR,[szFile_Ext]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szWM_Store' THEN (SELECT CONVERT(NVARCHAR,[szWM_Store]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText00' THEN (SELECT CONVERT(NVARCHAR,[szText00]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText01' THEN (SELECT CONVERT(NVARCHAR,[szText01]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText02' THEN (SELECT CONVERT(NVARCHAR,[szText02]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText03' THEN (SELECT CONVERT(NVARCHAR,[szText03]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText04' THEN (SELECT CONVERT(NVARCHAR,[szText04]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText05' THEN (SELECT CONVERT(NVARCHAR,[szText05]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText06' THEN (SELECT CONVERT(NVARCHAR,[szText06]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText07' THEN (SELECT CONVERT(NVARCHAR,[szText07]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText08' THEN (SELECT CONVERT(NVARCHAR,[szText08]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText09' THEN (SELECT CONVERT(NVARCHAR,[szText09]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText10' THEN (SELECT CONVERT(NVARCHAR,[szText10]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText11' THEN (SELECT CONVERT(NVARCHAR,[szText11]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText12' THEN (SELECT CONVERT(NVARCHAR,[szText12]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText13' THEN (SELECT CONVERT(NVARCHAR,[szText13]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText14' THEN (SELECT CONVERT(NVARCHAR,[szText14]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText15' THEN (SELECT CONVERT(NVARCHAR,[szText15]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText16' THEN (SELECT CONVERT(NVARCHAR,[szText16]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText17' THEN (SELECT CONVERT(NVARCHAR,[szText17]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText18' THEN (SELECT CONVERT(NVARCHAR,[szText18]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText19' THEN (SELECT CONVERT(NVARCHAR,[szText19]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText20' THEN (SELECT CONVERT(NVARCHAR,[szText20]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText21' THEN (SELECT CONVERT(NVARCHAR,[szText21]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText22' THEN (SELECT CONVERT(NVARCHAR,[szText22]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText23' THEN (SELECT CONVERT(NVARCHAR,[szText23]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText24' THEN (SELECT CONVERT(NVARCHAR,[szText24]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText25' THEN (SELECT CONVERT(NVARCHAR,[szText25]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText26' THEN (SELECT CONVERT(NVARCHAR,[szText26]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText27' THEN (SELECT CONVERT(NVARCHAR,[szText27]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText28' THEN (SELECT CONVERT(NVARCHAR,[szText28]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText29' THEN (SELECT CONVERT(NVARCHAR,[szText29]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText30' THEN (SELECT CONVERT(NVARCHAR,[szText30]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText31' THEN (SELECT CONVERT(NVARCHAR,[szText31]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText32' THEN (SELECT CONVERT(NVARCHAR,[szText32]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText33' THEN (SELECT CONVERT(NVARCHAR,[szText33]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText34' THEN (SELECT CONVERT(NVARCHAR,[szText34]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText35' THEN (SELECT CONVERT(NVARCHAR,[szText35]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText36' THEN (SELECT CONVERT(NVARCHAR,[szText36]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText37' THEN (SELECT CONVERT(NVARCHAR,[szText37]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText38' THEN (SELECT CONVERT(NVARCHAR,[szText38]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'szText39' THEN (SELECT CONVERT(NVARCHAR,[szText39]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger00' THEN (SELECT CONVERT(NVARCHAR,[dwInteger00]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger01' THEN (SELECT CONVERT(NVARCHAR,[dwInteger01]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger02' THEN (SELECT CONVERT(NVARCHAR,[dwInteger02]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger03' THEN (SELECT CONVERT(NVARCHAR,[dwInteger03]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger04' THEN (SELECT CONVERT(NVARCHAR,[dwInteger04]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger05' THEN (SELECT CONVERT(NVARCHAR,[dwInteger05]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger06' THEN (SELECT CONVERT(NVARCHAR,[dwInteger06]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger07' THEN (SELECT CONVERT(NVARCHAR,[dwInteger07]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger08' THEN (SELECT CONVERT(NVARCHAR,[dwInteger08]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger09' THEN (SELECT CONVERT(NVARCHAR,[dwInteger09]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger10' THEN (SELECT CONVERT(NVARCHAR,[dwInteger10]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger11' THEN (SELECT CONVERT(NVARCHAR,[dwInteger11]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger12' THEN (SELECT CONVERT(NVARCHAR,[dwInteger12]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger13' THEN (SELECT CONVERT(NVARCHAR,[dwInteger13]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger14' THEN (SELECT CONVERT(NVARCHAR,[dwInteger14]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger15' THEN (SELECT CONVERT(NVARCHAR,[dwInteger15]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger16' THEN (SELECT CONVERT(NVARCHAR,[dwInteger16]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger17' THEN (SELECT CONVERT(NVARCHAR,[dwInteger17]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger18' THEN (SELECT CONVERT(NVARCHAR,[dwInteger18]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger19' THEN (SELECT CONVERT(NVARCHAR,[dwInteger19]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger20' THEN (SELECT CONVERT(NVARCHAR,[dwInteger20]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger21' THEN (SELECT CONVERT(NVARCHAR,[dwInteger21]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger22' THEN (SELECT CONVERT(NVARCHAR,[dwInteger22]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger23' THEN (SELECT CONVERT(NVARCHAR,[dwInteger23]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwInteger24' THEN (SELECT CONVERT(NVARCHAR,[dwInteger24]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate00' THEN (SELECT CONVERT(NVARCHAR,[dwDate00]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate01' THEN (SELECT CONVERT(NVARCHAR,[dwDate01]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate02' THEN (SELECT CONVERT(NVARCHAR,[dwDate02]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate03' THEN (SELECT CONVERT(NVARCHAR,[dwDate03]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate04' THEN (SELECT CONVERT(NVARCHAR,[dwDate04]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate05' THEN (SELECT CONVERT(NVARCHAR,[dwDate05]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate06' THEN (SELECT CONVERT(NVARCHAR,[dwDate06]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate07' THEN (SELECT CONVERT(NVARCHAR,[dwDate07]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate08' THEN (SELECT CONVERT(NVARCHAR,[dwDate08]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwDate09' THEN (SELECT CONVERT(NVARCHAR,[dwDate09]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat00' THEN (SELECT CONVERT(NVARCHAR,[lfFloat00]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat01' THEN (SELECT CONVERT(NVARCHAR,[lfFloat01]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat02' THEN (SELECT CONVERT(NVARCHAR,[lfFloat02]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat03' THEN (SELECT CONVERT(NVARCHAR,[lfFloat03]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat04' THEN (SELECT CONVERT(NVARCHAR,[lfFloat04]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat05' THEN (SELECT CONVERT(NVARCHAR,[lfFloat05]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat06' THEN (SELECT CONVERT(NVARCHAR,[lfFloat06]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat07' THEN (SELECT CONVERT(NVARCHAR,[lfFloat07]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat08' THEN (SELECT CONVERT(NVARCHAR,[lfFloat08]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat09' THEN (SELECT CONVERT(NVARCHAR,[lfFloat09]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat10' THEN (SELECT CONVERT(NVARCHAR,[lfFloat10]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat11' THEN (SELECT CONVERT(NVARCHAR,[lfFloat11]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat12' THEN (SELECT CONVERT(NVARCHAR,[lfFloat12]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat13' THEN (SELECT CONVERT(NVARCHAR,[lfFloat13]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'lfFloat14' THEN (SELECT CONVERT(NVARCHAR,[lfFloat14]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'blBool00' THEN (SELECT CONVERT(NVARCHAR,[blBool00]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'blBool01' THEN (SELECT CONVERT(NVARCHAR,[blBool01]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'blBool02' THEN (SELECT CONVERT(NVARCHAR,[blBool02]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'blBool03' THEN (SELECT CONVERT(NVARCHAR,[blBool03]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'blBool04' THEN (SELECT CONVERT(NVARCHAR,[blBool04]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'decTimeStamp00' THEN (SELECT CONVERT(NVARCHAR,[decTimeStamp00]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'decTimeStamp01' THEN (SELECT CONVERT(NVARCHAR,[decTimeStamp01]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'decCurrency00' THEN (SELECT CONVERT(NVARCHAR,[decCurrency00]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar00' THEN (SELECT CONVERT(NVARCHAR,[wmVar00]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar01' THEN (SELECT CONVERT(NVARCHAR,[wmVar01]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar02' THEN (SELECT CONVERT(NVARCHAR,[wmVar02]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar03' THEN (SELECT CONVERT(NVARCHAR,[wmVar03]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar04' THEN (SELECT CONVERT(NVARCHAR,[wmVar04]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar05' THEN (SELECT CONVERT(NVARCHAR,[wmVar05]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar06' THEN (SELECT CONVERT(NVARCHAR,[wmVar06]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar07' THEN (SELECT CONVERT(NVARCHAR,[wmVar07]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar08' THEN (SELECT CONVERT(NVARCHAR,[wmVar08]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar09' THEN (SELECT CONVERT(NVARCHAR,[wmVar09]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar10' THEN (SELECT CONVERT(NVARCHAR,[wmVar10]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar11' THEN (SELECT CONVERT(NVARCHAR,[wmVar11]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar12' THEN (SELECT CONVERT(NVARCHAR,[wmVar12]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar13' THEN (SELECT CONVERT(NVARCHAR,[wmVar13]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar14' THEN (SELECT CONVERT(NVARCHAR,[wmVar14]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar15' THEN (SELECT CONVERT(NVARCHAR,[wmVar15]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar16' THEN (SELECT CONVERT(NVARCHAR,[wmVar16]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar17' THEN (SELECT CONVERT(NVARCHAR,[wmVar17]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar18' THEN (SELECT CONVERT(NVARCHAR,[wmVar18]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar19' THEN (SELECT CONVERT(NVARCHAR,[wmVar19]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar20' THEN (SELECT CONVERT(NVARCHAR,[wmVar20]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar21' THEN (SELECT CONVERT(NVARCHAR,[wmVar21]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar22' THEN (SELECT CONVERT(NVARCHAR,[wmVar22]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar23' THEN (SELECT CONVERT(NVARCHAR,[wmVar23]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar24' THEN (SELECT CONVERT(NVARCHAR,[wmVar24]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar25' THEN (SELECT CONVERT(NVARCHAR,[wmVar25]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar26' THEN (SELECT CONVERT(NVARCHAR,[wmVar26]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar27' THEN (SELECT CONVERT(NVARCHAR,[wmVar27]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar28' THEN (SELECT CONVERT(NVARCHAR,[wmVar28]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'wmVar29' THEN (SELECT CONVERT(NVARCHAR,[wmVar29]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
WHEN @szColumnName = 'dwILMRetention' THEN (SELECT CONVERT(NVARCHAR,[dwILMRetention]) FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) WHERE [dwDocID] = @dwDocID)
|
||
ELSE NULL
|
||
END AS ColumnValue,
|
||
@dwAttrType,
|
||
@szTableName,
|
||
@szColumnName,
|
||
@dwAttrSize
|
||
FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK)
|
||
WHERE [dwDocID] = @dwDocID;
|
||
------------------------------------------------------------------------------------------------------------
|
||
|
||
END; ELSE IF (@szTableName = 'Vector') BEGIN
|
||
|
||
SELECT @VectorCount = COUNT(*)
|
||
FROM [windreamDB].[dbo].[Vector] (NOLOCK)
|
||
WHERE [dwDocID] = @dwDocID
|
||
AND [dwAttrID] = @dwAttrID;
|
||
|
||
IF (@dwAttrType in (4097)) BEGIN -- String
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT @VectorCount, [szValue], @dwAttrType, @szTableName, 'szValue', @dwAttrSize
|
||
FROM [windreamDB].[dbo].[Vector] (NOLOCK)
|
||
WHERE [dwDocID] = @dwDocID
|
||
AND [dwAttrID] = @dwAttrID
|
||
GROUP BY [szValue];
|
||
|
||
END; ELSE IF (@dwAttrType in (4098,4107)) BEGIN -- Integer
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT @VectorCount, [dwValue], @dwAttrType, @szTableName, 'dwValue', @dwAttrSize
|
||
FROM [windreamDB].[dbo].[Vector] (NOLOCK)
|
||
WHERE [dwDocID] = @dwDocID
|
||
AND [dwAttrID] = @dwAttrID
|
||
GROUP BY [dwValue];
|
||
|
||
END; ELSE IF (@dwAttrType in (4099)) BEGIN -- Float
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT @VectorCount, [lfValue], @dwAttrType, @szTableName, 'lfValue', @dwAttrSize
|
||
FROM [windreamDB].[dbo].[Vector] (NOLOCK)
|
||
WHERE [dwDocID] = @dwDocID
|
||
AND [dwAttrID] = @dwAttrID
|
||
GROUP BY [lfValue];
|
||
|
||
END; ELSE IF (@dwAttrType in (8,4100,8204)) BEGIN -- Bool
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT @VectorCount, [blValue], @dwAttrType, @szTableName, 'blValue', @dwAttrSize
|
||
FROM [windreamDB].[dbo].[Vector] (NOLOCK)
|
||
WHERE [dwDocID] = @dwDocID
|
||
AND [dwAttrID] = @dwAttrID
|
||
GROUP BY [blValue];
|
||
|
||
END; ELSE IF (@dwAttrType in (4101)) BEGIN -- Date
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT @VectorCount, [decValue], @dwAttrType, @szTableName, 'decValue', @dwAttrSize
|
||
FROM [windreamDB].[dbo].[Vector] (NOLOCK)
|
||
WHERE [dwDocID] = @dwDocID
|
||
AND [dwAttrID] = @dwAttrID
|
||
GROUP BY [decValue];
|
||
|
||
END; ELSE BEGIN
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT 0, NULL, NULL, 'ERROR5', 'COLUMN NOT FOUND', NULL;
|
||
|
||
END;
|
||
|
||
-- Failsafe, to have at least one result
|
||
IF (SELECT COUNT(*) FROM @Table) = 0 BEGIN
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT 0, NULL, NULL, 'ERROR4', 'NO VALUE FOUND', NULL;
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT 0, NULL, NULL, 'ERROR3', 'TABLE NOT FOUND', NULL;
|
||
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT 0, NULL, NULL, 'ERROR2', 'TABLE NOT FOUND', NULL;
|
||
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
INSERT INTO @Table ([COUNT], [VALUE], [SOURCE_TYPE], [SOURCE_TABLE], [SOURCE_COLUMN], [SOURCE_COLUMN_SIZE])
|
||
SELECT 0, NULL, NULL, 'ERROR1', 'INDEX NOT FOUND', NULL;
|
||
|
||
END;
|
||
|
||
RETURN;
|
||
|
||
END;
|
||
GO
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- [PRDD_BACKUP_DATABASES]
|
||
-- =================================================================
|
||
-- Saving database to LOCAL (!!) backup folder
|
||
-- Minimum requirement: MS SQL Server 2016
|
||
--
|
||
-- Returns: INT Value - 0 = Everything worked well
|
||
-- =================================================================
|
||
-- Copyright (c) 2024 by Digital Data GmbH
|
||
--
|
||
-- Digital Data GmbH <20> Ludwig-Rinn-Strasse 16 <20> D-35452 Heuchelheim
|
||
-- Tel.: 0641/202360 <20> E-Mail: info-flow@digitaldata.works
|
||
-- =================================================================
|
||
-- Creation Date / Author: 13.12.2024 / MK
|
||
-- Version Date / Editor: 13.12.2024 / MK
|
||
-- Version Number: 1.0.0.0
|
||
-- =================================================================
|
||
-- History:
|
||
-- 13.12.2024 / MK - First Version
|
||
|
||
CREATE OR ALTER PROCEDURE [dbo].[PRDD_BACKUP_DATABASES] (
|
||
@pCOMPRESSION BIT = 1, -- Set to 1 to compress the database backup file (This option is not available in SQL Express Versions!). Otherwise set to 0.
|
||
@pLOCALBACKUPPATH NVARCHAR(200) = 'F:\Sicherung', -- Set the LOCAL Backup path. If path doesnt exist, it will be created.
|
||
@pSUBDIRECTORY NVARCHAR(50) = 'Date_YYYYMMDD', -- Set 'Date_YYYYMMDD' (which is Failsafe) for a backup subdir like '\path\20241213'. Every other value will used a static subdirectory name for creation.
|
||
@pINCLUDEDB NVARCHAR(1000) = 'DD_ECM', -- Set a list of included databases. IF <> NULL, it will override the @pEXCLUDEDB Parameter.
|
||
@pEXCLUDEDB NVARCHAR(1000) = 'master,model,msdb,tempdb', -- Set a list of exluded databases. Default exclusen are the system databases.
|
||
@pLOGLEVEL NVARCHAR(25) = 'ERROR' -- Set to 'INFO','WARN' OR 'ERROR' (or NULL to disable), logging to table: [TBDD_BACKUP_DATABASES_LOG].
|
||
-- 'INFO' includes Infos, Warnings and Errors, 'WARN' only warnings and Errors and 'ERROR' only Errors.
|
||
)
|
||
AS
|
||
BEGIN
|
||
|
||
SET NOCOUNT ON;
|
||
|
||
-- declare new vars because of parameter sniffing
|
||
DECLARE @COMPRESSION BIT = ISNULL(@pCOMPRESSION,0),
|
||
@LOCALBACKUPPATH NVARCHAR(255) = LTRIM(RTRIM(ISNULL(@pLOCALBACKUPPATH,''))),
|
||
@SUBDIRECTORY NVARCHAR(50) = LTRIM(RTRIM(ISNULL(@pSUBDIRECTORY,'Date_YYYYMMDD'))),
|
||
@INCLUDEDB NVARCHAR(1000) = LTRIM(RTRIM(ISNULL(@pINCLUDEDB,DB_NAME()))),
|
||
@EXCLUDEDB NVARCHAR(1000) = LTRIM(RTRIM(ISNULL(@pEXCLUDEDB,'master,model,msdb,tempdb'))),
|
||
@LOGLEVEL NVARCHAR(25) = LTRIM(RTRIM(ISNULL(@pLOGLEVEL,'ERROR')));
|
||
|
||
-- declare runtime vars
|
||
DECLARE @MyProcedureName NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||
DECLARE @DBName NVARCHAR(100),
|
||
@DBNameCount INT,
|
||
@FULLLOCALBACKUPPATH NVARCHAR(255),
|
||
@ProductVersion sql_variant,
|
||
@ProductMainVersion INT,
|
||
@ProductLevel sql_variant,
|
||
@ProductEdition sql_variant,
|
||
@ProductEditionSimpleString NVARCHAR(50),
|
||
@MySessionID NVARCHAR(50) = @@SPID,
|
||
@Date_YYYYMMDD NVARCHAR(20) = CONVERT(VARCHAR(20),GETDATE(),112),
|
||
@sysconfigurations INT = 0,
|
||
@SQLCommand NVARCHAR(1000) = NULL,
|
||
@CMDCommand NVARCHAR(1000) = NULL,
|
||
@CMDCommandResult INT = 0,
|
||
@return_status NVARCHAR(50) = 0,
|
||
@return_status_text NVARCHAR(MAX) = 'START ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||
|
||
PRINT '==============================='
|
||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||
PRINT 'PARAMETER01 - @COMPRESSION: ' + CONVERT(VARCHAR(200),@COMPRESSION);
|
||
PRINT 'PARAMETER02 - @LOCALBACKUPPATH: ' + CONVERT(VARCHAR(50),@LOCALBACKUPPATH);
|
||
PRINT 'PARAMETER03 - @SUBDIRECTORY: ' + CONVERT(VARCHAR(1),@SUBDIRECTORY);
|
||
PRINT 'PARAMETER04 - @INCLUDEDB: ' + CONVERT(VARCHAR(1000),@INCLUDEDB);
|
||
PRINT 'PARAMETER05 - @EXCLUDEDB: ' + CONVERT(VARCHAR(1000),@EXCLUDEDB);
|
||
PRINT 'PARAMETER06 - @LOGLEVEL: ' + CONVERT(VARCHAR(25),@LOGLEVEL);
|
||
|
||
--=================================================-- Get server infos --==================================================--
|
||
SELECT @ProductVersion = SERVERPROPERTY('productversion'), @ProductLevel = SERVERPROPERTY ('productlevel'), @ProductEdition = SERVERPROPERTY ('edition');
|
||
SET @ProductMainVersion = ISNULL(LEFT(convert(VARCHAR(100),@ProductVersion), CHARINDEX('.', convert(VARCHAR(100),@ProductVersion)) - 1),0);
|
||
|
||
PRINT '';
|
||
PRINT 'Informations about this Server:';
|
||
PRINT '@MySessionID: ' + CONVERT(VARCHAR(100),@MySessionID);
|
||
PRINT '@ProductVersion: ' + CONVERT(VARCHAR(100),@ProductVersion);
|
||
PRINT '@ProductMainVersion: ' + CONVERT(VARCHAR(100),@ProductMainVersion);
|
||
PRINT '@ProductLevel: ' + CONVERT(VARCHAR(100),@ProductLevel);
|
||
PRINT '@ProductEdition: ' + CONVERT(VARCHAR(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_BACKUP_DATABASES_LOG') BEGIN
|
||
PRINT 'Log table already exists';
|
||
END; ELSE BEGIN
|
||
PRINT 'Log table does not exists, trying to create...';
|
||
|
||
CREATE TABLE [dbo].[TBDD_BACKUP_DATABASES_LOG](
|
||
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||
[LOG_LEVEL] [varchar](25) NOT NULL,
|
||
[MESSAGE1] [varchar](max) NOT NULL,
|
||
[MESSAGE2] [varchar](max) NULL,
|
||
[MESSAGE3] [varchar](max) NULL,
|
||
[MESSAGE4] [varchar](max) NULL,
|
||
[MESSAGE5] [varchar](max) NULL,
|
||
[COMMENT] [varchar](max) NULL,
|
||
[ADDED_WHO] [varchar](50) NOT NULL,
|
||
[ADDED_WHEN] [datetime] NOT NULL,
|
||
CONSTRAINT [PK_TBDD_BACKUP_DATABASES_LOG] PRIMARY KEY CLUSTERED
|
||
(
|
||
[GUID] ASC
|
||
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
|
||
|
||
ALTER TABLE [dbo].[TBDD_BACKUP_DATABASES_LOG] ADD CONSTRAINT [DF_TBDD_BACKUP_DATABASES_LOG_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO];
|
||
|
||
ALTER TABLE [dbo].[TBDD_BACKUP_DATABASES_LOG] ADD CONSTRAINT [DF_TBDD_BACKUP_DATABASES_LOG_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN];
|
||
|
||
END;
|
||
END; ELSE BEGIN
|
||
PRINT '';
|
||
PRINT 'Skipping Logging to log table!';
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log start to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL,'preparing', 'procedure', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--================================================-- Check sql edition --=================================================--
|
||
IF (CONVERT(VARCHAR(100),@ProductEdition) like '%express%') BEGIN
|
||
SET @return_status_text = 'This is an Express Version of the SQL Server, so backup COMPRESSION is not available!';
|
||
SET @ProductEditionSimpleString = 'Express';
|
||
END; ELSE BEGIN
|
||
SET @return_status_text = 'This is not an Express Version of the SQL Server, so backup COMPRESSION is available!';
|
||
SET @ProductEditionSimpleString = 'Standard/Datacenter';
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===================================================-- Log to table --====================================================--
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL,'preparing', 'procedure', @return_status, 'Found SQL Edition: ' + @ProductEditionSimpleString, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--=============================================-- Get the dbs for the loop --==============================================--
|
||
-- Create a temporary table to hold the table names
|
||
CREATE TABLE #DBList (DBName NVARCHAR(256));
|
||
|
||
IF (@ProductMainVersion >= 13) BEGIN
|
||
|
||
IF (@INCLUDEDB is not NULL) BEGIN
|
||
INSERT INTO #DBList(DBName)
|
||
SELECT [name] as 'DBName'
|
||
FROM [master].[sys].[databases]
|
||
WHERE [name] IN (SELECT [value] FROM STRING_SPLIT(@INCLUDEDB, ',')) -- include these databases
|
||
AND [state] = 0 -- database is online
|
||
AND [is_in_standby] = 0; -- database is not read only for log shipping
|
||
END; ELSE BEGIN
|
||
INSERT INTO #DBList(DBName)
|
||
SELECT [name] as 'DBName'
|
||
FROM [master].[sys].[databases]
|
||
WHERE [name] NOT IN (SELECT [value] FROM STRING_SPLIT(@EXCLUDEDB, ',')) -- exclude these databases
|
||
AND [state] = 0 -- database is online
|
||
AND [is_in_standby] = 0; -- database is not read only for log shipping
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
|
||
PRINT 'Because of the SQL Version only one DB can be processed!'
|
||
INSERT INTO #DBList(DBName)
|
||
SELECT [name] as 'DBName'
|
||
FROM [master].[sys].[databases]
|
||
WHERE [name] = @INCLUDEDB -- use only this database
|
||
AND [state] = 0 -- database is online
|
||
AND [is_in_standby] = 0; -- database is not read only for log shipping
|
||
|
||
END;
|
||
|
||
SELECT @DBNameCount = COUNT(*) FROM #DBList;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
SET @return_status_text = 'Found ' + convert(VARCHAR,@DBNameCount) + ' database(s) to process!';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF (@LOGLEVEL in ('INFO','WARN')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_list', 'count', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--==========================================-- Create the main loop (cursor) --============================================--
|
||
IF (@DBNameCount > 0) BEGIN
|
||
|
||
IF LEN(@LOCALBACKUPPATH) > 0 and (@LOCALBACKUPPATH like '%\%') BEGIN
|
||
|
||
--==========================================-- Checking system configuration --============================================--
|
||
|
||
PRINT 'Checking system configuration';
|
||
|
||
SELECT @sysconfigurations = SUM(CAST([value] AS INT))
|
||
FROM [master].[sys].[configurations]
|
||
WHERE [name] in ('show advanced options','Ole Automation Procedures','xp_cmdshell');
|
||
|
||
If (@sysconfigurations = 3) BEGIN
|
||
|
||
SET @return_status = 0;
|
||
SET @return_status_text = 'System configuration does fit! (' + CONVERT(varchar,@sysconfigurations) + ')';
|
||
PRINT @return_status_text;
|
||
|
||
END; ELSE BEGIN
|
||
|
||
PRINT 'System configuration does NOT fit! Try to reconfigure... (' + CONVERT(varchar,@sysconfigurations) + ')';
|
||
|
||
EXEC sp_configure 'show advanced options', 1;
|
||
RECONFIGURE WITH OVERRIDE;
|
||
EXEC sp_configure 'Ole Automation Procedures', 1;
|
||
RECONFIGURE WITH OVERRIDE;
|
||
EXEC sp_configure 'xp_cmdshell', 1;
|
||
RECONFIGURE WITH OVERRIDE;
|
||
|
||
-- Check again
|
||
SELECT @sysconfigurations = SUM(CAST(value AS INT))
|
||
FROM [master].[sys].[configurations]
|
||
WHERE [name] in ('show advanced options','Ole Automation Procedures','xp_cmdshell');
|
||
|
||
If (@sysconfigurations = 3) BEGIN
|
||
SET @return_status = 0;
|
||
SET @return_status_text = 'System configuration does fit, now! (' + CONVERT(varchar,@sysconfigurations) + ')';
|
||
PRINT @return_status_text;
|
||
END; ELSE BEGIN
|
||
SET @return_status = 1;
|
||
SET @return_status_text = 'System configuration does NOT fit! (' + CONVERT(varchar,@sysconfigurations) + ')';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF (@LOGLEVEL in ('INFO','WARN')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'server_check', 'filesystem_config',@return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
If (@return_status = 0) BEGIN
|
||
|
||
DECLARE db_cursor CURSOR STATIC LOCAL FOR
|
||
SELECT [DBName] as 'DBName' FROM #DBList;
|
||
|
||
OPEN db_cursor
|
||
FETCH NEXT FROM db_cursor INTO @DBName
|
||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||
BEGIN TRY
|
||
|
||
PRINT ' ';
|
||
PRINT '-------------------------------';
|
||
PRINT 'Now processing: ' + CONVERT(varchar(100),@DBName);
|
||
|
||
--==============================================-- Preparing backup path --================================================--
|
||
|
||
-- Chekc if base path exits
|
||
SET @CMDCommand = 'IF EXIST "' + @LOCALBACKUPPATH + '" (echo 1) ELSE (echo 0)';
|
||
|
||
CREATE TABLE #CMDCommandResult (Output NVARCHAR(255));
|
||
INSERT INTO #CMDCommandResult (Output)
|
||
EXEC xp_cmdshell @CMDCommand;
|
||
|
||
SELECT @CMDCommandResult = CAST(Output AS INT) FROM #CMDCommandResult WHERE Output IS NOT NULL;
|
||
DROP TABLE #CMDCommandResult;
|
||
|
||
IF (@CMDCommandResult = 1) BEGIN
|
||
|
||
SET @return_status = 0;
|
||
SET @return_status_text = 'Directory (' + @LOCALBACKUPPATH + ') does exist!';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
IF (@SUBDIRECTORY like '%Date_YYYYMMDD%') BEGIN
|
||
SELECT @FULLLOCALBACKUPPATH = @LOCALBACKUPPATH + '\' + @Date_YYYYMMDD + '\';
|
||
END; ELSE IF (LEN(@SUBDIRECTORY) >= 1) BEGIN
|
||
SELECT @FULLLOCALBACKUPPATH = @LOCALBACKUPPATH + '\' + @SUBDIRECTORY + '\';
|
||
END; ELSE BEGIN
|
||
SELECT @FULLLOCALBACKUPPATH = @LOCALBACKUPPATH + '\';
|
||
END;
|
||
|
||
SET @FULLLOCALBACKUPPATH = REPLACE(@FULLLOCALBACKUPPATH,'\\','\');
|
||
PRINT 'Final backup path set: ' + @FULLLOCALBACKUPPATH;
|
||
EXECUTE @return_status = master.dbo.xp_create_subdir @FULLLOCALBACKUPPATH;
|
||
|
||
IF (@return_status = 0) BEGIN
|
||
SET @return_status_text = 'Creating database backup path successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE BEGIN
|
||
SET @return_status_text = 'Creating database backup path returns warnings or has failed, check the access rights!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
IF (@return_status = 0) BEGIN
|
||
|
||
SET @FULLLOCALBACKUPPATH += @DBName + '.BAK';
|
||
SET @return_status_text = 'Starting backup to: ' + @FULLLOCALBACKUPPATH;
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
IF (@ProductEditionSimpleString = 'Express') BEGIN
|
||
SET @SQLCommand = 'BACKUP DATABASE [' + @DBName + '] TO DISK = ''' + @FULLLOCALBACKUPPATH + ''' WITH FORMAT, CHECKSUM;';
|
||
END; ELSE BEGIN
|
||
SET @SQLCommand = 'BACKUP DATABASE [' + @DBName + '] TO DISK = ''' + @FULLLOCALBACKUPPATH + ''' WITH FORMAT, COMPRESSION, CHECKSUM;';
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @SQLCommand, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
BEGIN TRY
|
||
EXEC sp_executesql @SQLCommand;
|
||
SET @return_status = 0;
|
||
SET @return_status_text = 'Backup successful!';
|
||
END TRY
|
||
BEGIN CATCH
|
||
|
||
-- Handle any errors that occur during the process.
|
||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||
|
||
SET @return_status = 1;
|
||
SET @return_status_text = 'Backup failed!';
|
||
END CATCH;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END; ELSE BEGIN
|
||
|
||
SET @return_status_text = 'Cannot backup database because of the previous error!';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN','ERROR')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END; ELSE BEGIN
|
||
|
||
SET @return_status = 1;
|
||
SET @return_status_text = 'Directory (' + @LOCALBACKUPPATH + ') does not exist!';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN','ERROR')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END;
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
|
||
-- Handle any errors that occur during the process.
|
||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||
|
||
--================================================-- Log error to table --=================================================--
|
||
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'db_cursor', @DBName, ERROR_MESSAGE(),@MyProcedureName,GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
BEGIN TRY
|
||
DROP TABLE #CMDCommandResult;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#CMDCommandResult Temp table is already gone...';
|
||
END CATCH;
|
||
|
||
END CATCH;
|
||
|
||
FETCH NEXT FROM db_cursor INTO @DBName;
|
||
|
||
END;
|
||
|
||
CLOSE db_cursor;
|
||
DEALLOCATE db_cursor;
|
||
|
||
END; ELSE BEGIN
|
||
|
||
SET @return_status = 1;
|
||
SET @return_status_text = 'Cannot backup database, because of system configuration!';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN','ERROR')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'server_check', 'filesystem_config', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END;
|
||
|
||
-- Ensure temp table is droped and cursor is closed
|
||
BEGIN TRY
|
||
DROP TABLE #DBList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#DBList Temp table is already gone...';
|
||
END CATCH;
|
||
|
||
BEGIN TRY
|
||
DROP TABLE #CMDCommandResult;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#CMDCommandResult Temp table is already gone...';
|
||
END CATCH;
|
||
|
||
END; ELSE BEGIN
|
||
|
||
SET @return_status = 1;
|
||
SET @return_status_text = 'Invalid LOCALBACKUPPATH!';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN','ERROR')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'server_check', 'filesystem_config', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
|
||
SET @return_status = 0;
|
||
SET @return_status_text = 'So there is nothing to do...';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN','ERROR')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('WARN', 'db_list', 'count', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
SET @return_status_text = 'END ' + @MyProcedureName + ' @ ' + 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
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_BACKUP_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_BACKUP_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'closing', 'procedure', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
PRINT '';
|
||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||
PRINT '===============================';
|
||
|
||
Return @return_status;
|
||
|
||
END;
|
||
GO
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- [PRDD_MAINTAIN_DATABASES]
|
||
-- =================================================================
|
||
-- Checks database health, shrinks all database and log files
|
||
-- and recreates indizes in a maintanance run.
|
||
-- Minimum requirement: MS SQL Server 2016
|
||
--
|
||
-- Returns: INT Value - 0 = Everything worked well
|
||
-- =================================================================
|
||
-- Copyright (c) 2024 by Digital Data GmbH
|
||
--
|
||
-- Digital Data GmbH <20> Ludwig-Rinn-Strasse 16 <20> D-35452 Heuchelheim
|
||
-- Tel.: 0641/202360 <20> E-Mail: info-flow@digitaldata.works
|
||
-- =================================================================
|
||
-- Creation Date / Author: 29.11.2024 / MK
|
||
-- Version Date / Editor: 13.12.2024 / MK
|
||
-- Version Number: 1.1.0.1
|
||
-- =================================================================
|
||
-- History:
|
||
-- 29.11.2024 / MK - First Version
|
||
-- 06.12.2024 / MK - Added "SET ONLINE" after forced SINGLE_USER Mode, Added repair parameter for DBCHECK, added @pRECOMPILEPROCEDURES, some minor error fixes
|
||
-- 13.12.2024 / MK - New way the get the procedure name, failsafe for parameters implemented
|
||
|
||
CREATE OR ALTER PROCEDURE [dbo].[PRDD_MAINTAIN_DATABASES] (
|
||
@pCHECKDB BIT = 1, -- Set to 1 to make a check of the database before shrinking incl. soft repair function. Otherwise set to 0.
|
||
@pSHRINKLOG BIT = 1, -- Set to 1 to shrink the log file. Otherwise set to 0.
|
||
@pSHRINKDB BIT = 0, -- Set to 1 to shrink the database file as well. Otherwise set to 0. (Dont use on FILESTREAM databases!)
|
||
@pREBUILDINDEX BIT = 0, -- Set to 1 to recreate all database indexes. Otherwise set to 0.
|
||
@pRECOMPILEPROCEDURES BIT = 0, -- Set to 1 to recompile all database procedures. Otherwise set to 0.
|
||
@pCLEARQUERYCACHE BIT = 0, -- Set to 1 to clear the QL query cache via DROPCLEANBUFFERS. Otherwise set to 0.
|
||
@pFORCE BIT = 0, -- Set to 1 to force the shrinking, it will cut all current sessens. In combination with @pCHECKDB it trys the soft reapair dbs. Otherwise set to 0.
|
||
@pINCLUDEDB NVARCHAR(1000) = 'DD_ECM', -- Set a list of included databases. IF <> NULL, it will override the @pEXCLUDEDB Parameter
|
||
@pEXCLUDEDB NVARCHAR(1000) = 'master,model,msdb,tempdb', -- Set a list of exluded databases. Default exclusen are the system databases.
|
||
@pLOGLEVEL NVARCHAR(25) = 'ERROR' -- Set to 'INFO','WARN' OR 'ERROR' (or NULL to disable), logging to table: [TBDD_MAINTAIN_DATABASES_LOG]
|
||
-- 'INFO' includes Infos, Warnings and Errors, 'WARN' only warnings and Errors and 'ERROR' only Errors
|
||
)
|
||
AS
|
||
BEGIN
|
||
|
||
SET NOCOUNT ON;
|
||
|
||
-- declare new vars because of parameter sniffing
|
||
DECLARE @CHECKDB BIT = ISNULL(@pCHECKDB,1),
|
||
@SHRINKLOG BIT = ISNULL(@pSHRINKLOG,1),
|
||
@SHRINKDB BIT = ISNULL(@pSHRINKDB,0),
|
||
@REBUILDINDEX BIT = ISNULL(@pREBUILDINDEX,0),
|
||
@RECOMPILEPROCEDURES BIT = ISNULL(@pRECOMPILEPROCEDURES,0),
|
||
@CLEARQUERYCACHE BIT = ISNULL(@pCLEARQUERYCACHE,0),
|
||
@FORCE BIT = ISNULL(@pFORCE,0),
|
||
@INCLUDEDB NVARCHAR(1000) = LTRIM(RTRIM(ISNULL(@pINCLUDEDB,DB_NAME()))),
|
||
@EXCLUDEDB NVARCHAR(1000) = LTRIM(RTRIM(ISNULL(@pEXCLUDEDB,'master,model,msdb,tempdb'))),
|
||
@LOGLEVEL NVARCHAR(25) = LTRIM(RTRIM(ISNULL(@pLOGLEVEL,'ERROR')));
|
||
|
||
-- declare runtime vars
|
||
DECLARE @MyProcedureName NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||
DECLARE @ProcedureName NVARCHAR(50),
|
||
@DBName NVARCHAR(100),
|
||
@DBNameCount INT,
|
||
@LogFileName NVARCHAR(100),
|
||
@CurrentLogFileSizeMB INT,
|
||
@MinimumLogFileSizeMB INT,
|
||
@TargetLogFileSizeMB INT,
|
||
@ProductVersion sql_variant,
|
||
@ProductMainVersion INT,
|
||
@ProductLevel sql_variant,
|
||
@ProductEdition sql_variant,
|
||
@SchemaName NVARCHAR(50),
|
||
@TableName NVARCHAR(256),
|
||
@LoginName NVARCHAR(50),
|
||
@HostName NVARCHAR(50),
|
||
@SessionID NVARCHAR(50) = NULL,
|
||
@MySessionID NVARCHAR(50) = @@SPID,
|
||
@SQLCommand NVARCHAR(MAX) = NULL,
|
||
@TableListCount INT = 0,
|
||
@ProcedureListCount INT = 0,
|
||
@return_status NVARCHAR(50) = 0,
|
||
@return_status_text NVARCHAR(MAX) = 'START ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||
|
||
PRINT '==============================='
|
||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||
PRINT 'PARAMETER01 - @CHECKDB: ' + CONVERT(VARCHAR(1),@CHECKDB);
|
||
PRINT 'PARAMETER02 - @SHRINKLOG: ' + CONVERT(VARCHAR(1),@SHRINKLOG);
|
||
PRINT 'PARAMETER03 - @SHRINKDB: ' + CONVERT(VARCHAR(1),@SHRINKDB);
|
||
PRINT 'PARAMETER04 - @REBUILDINDEX: ' + CONVERT(VARCHAR(1),@REBUILDINDEX);
|
||
PRINT 'PARAMETER05 - @RECOMPILEPROCEDURES: ' + CONVERT(VARCHAR(1),@RECOMPILEPROCEDURES);
|
||
PRINT 'PARAMETER06 - @CLEARQUERYCACHE: ' + CONVERT(VARCHAR(1),@CLEARQUERYCACHE);
|
||
PRINT 'PARAMETER07 - @FORCE: ' + CONVERT(VARCHAR(1),@FORCE);
|
||
PRINT 'PARAMETER08 - @INCLUDEDB: ' + CONVERT(VARCHAR(1000),@INCLUDEDB);
|
||
PRINT 'PARAMETER09 - @EXCLUDEDB: ' + CONVERT(VARCHAR(1000),@EXCLUDEDB);
|
||
PRINT 'PARAMETER10 - @LOGLEVEL: ' + CONVERT(VARCHAR(25),@LOGLEVEL);
|
||
|
||
--=================================================-- Get server infos --==================================================--
|
||
SELECT @ProductVersion = SERVERPROPERTY('productversion'), @ProductLevel = SERVERPROPERTY ('productlevel'), @ProductEdition = SERVERPROPERTY ('edition');
|
||
SET @ProductMainVersion = ISNULL(LEFT(convert(VARCHAR(100),@ProductVersion), CHARINDEX('.', convert(VARCHAR(100),@ProductVersion)) - 1),0);
|
||
|
||
PRINT '';
|
||
PRINT 'Informations about this Server:';
|
||
PRINT '@MySessionID: ' + CONVERT(VARCHAR(100),@MySessionID);
|
||
PRINT '@ProductVersion: ' + CONVERT(VARCHAR(100),@ProductVersion);
|
||
PRINT '@ProductMainVersion: ' + CONVERT(VARCHAR(100),@ProductMainVersion);
|
||
PRINT '@ProductLevel: ' + CONVERT(VARCHAR(100),@ProductLevel);
|
||
PRINT '@ProductEdition: ' + CONVERT(VARCHAR(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_MAINTAIN_DATABASES_LOG') BEGIN
|
||
PRINT 'Log table already exists';
|
||
END; ELSE BEGIN
|
||
PRINT 'Log table does not exists, trying to create...';
|
||
|
||
CREATE TABLE [dbo].[TBDD_MAINTAIN_DATABASES_LOG](
|
||
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||
[LOG_LEVEL] [varchar](25) NOT NULL,
|
||
[MESSAGE1] [varchar](max) NOT NULL,
|
||
[MESSAGE2] [varchar](max) NULL,
|
||
[MESSAGE3] [varchar](max) NULL,
|
||
[MESSAGE4] [varchar](max) NULL,
|
||
[MESSAGE5] [varchar](max) NULL,
|
||
[COMMENT] [varchar](max) NULL,
|
||
[ADDED_WHO] [varchar](50) NOT NULL,
|
||
[ADDED_WHEN] [datetime] NOT NULL,
|
||
CONSTRAINT [PK_TBDD_MAINTAIN_DATABASES_LOG] PRIMARY KEY CLUSTERED
|
||
(
|
||
[GUID] ASC
|
||
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
|
||
|
||
ALTER TABLE [dbo].[TBDD_MAINTAIN_DATABASES_LOG] ADD CONSTRAINT [DF_TBDD_MAINTAIN_DATABASES_LOG_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO];
|
||
|
||
ALTER TABLE [dbo].[TBDD_MAINTAIN_DATABASES_LOG] ADD CONSTRAINT [DF_TBDD_MAINTAIN_DATABASES_LOG_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN];
|
||
|
||
END;
|
||
END; ELSE BEGIN
|
||
PRINT '';
|
||
PRINT 'Skipping Logging to log table!';
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log start to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL,'preparing', 'procedure', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--=============================================-- Get the dbs for the loop --==============================================--
|
||
-- Create a temporary table to hold the table names
|
||
CREATE TABLE #DBList (DBName NVARCHAR(256));
|
||
|
||
IF (@ProductMainVersion >= 13) BEGIN
|
||
|
||
IF (@INCLUDEDB is not NULL) BEGIN
|
||
INSERT INTO #DBList(DBName)
|
||
SELECT [name] as 'DBName'
|
||
FROM [master].[sys].[databases]
|
||
WHERE [name] IN (SELECT [value] FROM STRING_SPLIT(@INCLUDEDB, ',')) -- include these databases
|
||
AND [state] = 0 -- database is online
|
||
AND [is_in_standby] = 0; -- database is not read only for log shipping
|
||
END; ELSE BEGIN
|
||
INSERT INTO #DBList(DBName)
|
||
SELECT [name] as 'DBName'
|
||
FROM [master].[sys].[databases]
|
||
WHERE [name] NOT IN (SELECT [value] FROM STRING_SPLIT(@EXCLUDEDB, ',')) -- exclude these databases
|
||
AND [state] = 0 -- database is online
|
||
AND [is_in_standby] = 0; -- database is not read only for log shipping
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
|
||
PRINT 'Because of the SQL Version only one DB can be processed!'
|
||
INSERT INTO #DBList(DBName)
|
||
SELECT [name] as 'DBName'
|
||
FROM [master].[sys].[databases]
|
||
WHERE [name] = @INCLUDEDB -- use only this database
|
||
AND [state] = 0 -- database is online
|
||
AND [is_in_standby] = 0; -- database is not read only for log shipping
|
||
|
||
END;
|
||
|
||
SELECT @DBNameCount = COUNT(*) FROM #DBList;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
SET @return_status_text = 'Found ' + convert(VARCHAR,@DBNameCount) + ' database(s) to process!';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF (@LOGLEVEL in ('INFO','WARN')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_list', 'count', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--==========================================-- Create the main loop (cursor) --============================================--
|
||
IF (@DBNameCount > 0) BEGIN
|
||
|
||
DECLARE db_cursor CURSOR STATIC LOCAL FOR
|
||
SELECT [DBName] as 'DBName' FROM #DBList;
|
||
|
||
OPEN db_cursor
|
||
FETCH NEXT FROM db_cursor INTO @DBName
|
||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||
BEGIN TRY
|
||
|
||
PRINT ' ';
|
||
PRINT '-------------------------------';
|
||
PRINT 'Now processing: ' + CONVERT(varchar(100),@DBName);
|
||
|
||
--==============================================-- Change db working mode --===============================================--
|
||
IF (@FORCE = 1) and (@return_status = 0) BEGIN
|
||
|
||
PRINT 'Closing active database connections... first time';
|
||
DECLARE kill_cursor CURSOR STATIC LOCAL FOR
|
||
SELECT CONVERT(NVARCHAR(5), [session_id]) as 'SessionID',
|
||
CONVERT(NVARCHAR(50), [login_name]) as 'LoginName',
|
||
CONVERT(NVARCHAR(50), [host_name]) as 'HostName'
|
||
FROM [master].[sys].[dm_exec_sessions] (NOLOCK)
|
||
WHERE [is_user_process] = 1
|
||
AND [database_id] = db_id(@DBName)
|
||
AND [session_id] <> @MySessionID;
|
||
|
||
OPEN kill_cursor;
|
||
FETCH NEXT FROM kill_cursor INTO @SessionID, @LoginName, @HostName;
|
||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||
|
||
BEGIN TRY
|
||
SET @SQLCommand = 'KILL ' + @SessionID + ';';
|
||
PRINT 'Killing @SessionID: ' + @SessionID + ', @LoginName: ' + @LoginName + ', @HostName: ' + @HostName;
|
||
EXEC sp_executesql @SQLCommand;
|
||
SET @SQLCommand = NULL;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Closing connections to database was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Closing connections to database returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'kill_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
|
||
-- Handle any errors that occur during the process.
|
||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||
|
||
SET @SQLCommand = NULL;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL is not null) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'kill_cursor', @DBName, ERROR_MESSAGE(),@MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END CATCH;
|
||
|
||
FETCH NEXT FROM kill_cursor INTO @SessionID, @LoginName, @HostName;
|
||
|
||
END;
|
||
|
||
CLOSE kill_cursor;
|
||
DEALLOCATE kill_cursor;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
PRINT 'Set the database to SINGLE_USER mode to avoid multiple active sessions.';
|
||
SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Setting the database to SINGLE_USER mode was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Setting the database to SINGLE_USER mode returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END; ELSE BEGIN
|
||
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping to change the database mode (FORCE = OFF)!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Check db consistency --================================================--
|
||
IF (@CHECKDB = 1) and (@return_status = 0) BEGIN
|
||
|
||
IF (@FORCE = 1) BEGIN
|
||
PRINT 'Check the database for consistency and health and try soft repair.';
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC CHECKDB ([' + @DBName + '], REPAIR_REBUILD) WITH NO_INFOMSGS, ALL_ERRORMSGS';
|
||
END; ELSE BEGIN
|
||
PRINT 'Check the database for consistency and health.';
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC CHECKDB ([' + @DBName + ']) WITH NO_INFOMSGS, ALL_ERRORMSGS';
|
||
END;
|
||
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Check the database for consistency and health was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Check the database for consistency and health returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping the database check for consistency and health!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--============================================-- Prepare shrinking the log--===============================================--
|
||
IF (@SHRINKLOG = 1) BEGIN
|
||
|
||
--===========================================-- Get infos about the log file --============================================--
|
||
PRINT 'Get the current and minimum size of the log file in MB.';
|
||
SET @SQLCommand = N'SELECT TOP 1 @LogFileName = [name], @CurrentLogFileSizeMB = ([size] / 128), @MinimumLogFileSizeMB = ([growth] * 8)
|
||
FROM [master].[sys].[master_files]
|
||
WHERE [database_id] = DB_ID(''' + @DBName + ''') AND [type_desc] = ''LOG''';
|
||
EXEC @return_status = sp_executesql @SQLCommand, N'@LogFileName VARCHAR(100) OUTPUT, @CurrentLogFileSizeMB INT OUTPUT, @MinimumLogFileSizeMB INT OUTPUT',
|
||
@LogFileName OUTPUT, @CurrentLogFileSizeMB OUTPUT, @MinimumLogFileSizeMB OUTPUT;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Getting log file settings was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Getting log file settings returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===========================================-- Calculate target file size --==============================================--
|
||
PRINT 'The @CurrentLogFileSizeMB is: ' + CONVERT(VARCHAR(1000),@CurrentLogFileSizeMB);
|
||
SET @TargetLogFileSizeMB = CASE WHEN @CurrentLogFileSizeMB * 0.1 < @MinimumLogFileSizeMB
|
||
THEN @MinimumLogFileSizeMB
|
||
ELSE @CurrentLogFileSizeMB * 0.1
|
||
END;
|
||
|
||
PRINT 'The @TargetLogFileSizeMB is: ' + CONVERT(VARCHAR(1000),@TargetLogFileSizeMB);
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--=================================================-- Schrink db logs --===================================================--
|
||
IF (@CurrentLogFileSizeMB > @TargetLogFileSizeMB) BEGIN
|
||
|
||
--=============================================-- Change db recovery mode --===============================================--
|
||
PRINT 'Truncating the log needs to change the database recovery model to SIMPLE.';
|
||
SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET RECOVERY SIMPLE';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Setting database to the simple recovery model was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Setting database to the simple recovery model returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===================================================-- Now, do it! --=====================================================--
|
||
IF (@return_status = 0) BEGIN
|
||
PRINT 'Shrink the truncated log file to 10% of its current size or the minimum size, whichever is larger.';
|
||
IF (@ProductMainVersion >= 16) BEGIN
|
||
IF (@FORCE = 1) BEGIN
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeMB AS VARCHAR) + ') WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT = BLOCKERS), NO_INFOMSGS;';
|
||
END; ELSE BEGIN
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeMB AS VARCHAR) + ') WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT = SELF), NO_INFOMSGS;';
|
||
END;
|
||
END; ELSE BEGIN
|
||
PRINT 'Because of the sql server version, DBCC SHRINKFILE is not applicable with the FORCE parameter!';
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeMB AS VARCHAR) + ') WITH NO_INFOMSGS;';
|
||
END;
|
||
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Shrinking the database log file was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Shrinking the database log file returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
SET @return_status_text = 'Shrinking the database log was skipped because of previouse error(s)!';
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--=============================================-- Change db recovery mode --===============================================--
|
||
PRINT 'Reset the database recovery model.'
|
||
SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET RECOVERY FULL';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Setting database back to the full recovery model was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Setting database back to the full recovery model returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END; ELSE BEGIN
|
||
PRINT 'No shrink action neccessary!';
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END; ELSE BEGIN
|
||
PRINT 'Skipping to shrink the log file!';
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--================================================-- Shrink db as well --==================================================--
|
||
IF ((@SHRINKDB = 1) and (@return_status = 0)) BEGIN
|
||
PRINT 'Shrink the database to reclaim unused space.';
|
||
IF (@ProductMainVersion >= 16) BEGIN
|
||
IF (@FORCE = 1) BEGIN
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKDATABASE ([' + @DBName + ']) WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT = BLOCKERS), NO_INFOMSGS;';
|
||
END; ELSE BEGIN
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKDATABASE ([' + @DBName + ']) WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT = SELF), NO_INFOMSGS;';
|
||
END;
|
||
END; ELSE BEGIN
|
||
PRINT 'Because of the sql server version, DBCC SHRINKDATABASE is not applicable with the FORCE parameter!';
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKDATABASE ([' + @DBName + ']) WITH NO_INFOMSGS;';
|
||
END;
|
||
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Shrinking the database was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Shrinking the database returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping shrinking the database!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--=============================================-- Rebuild database indexes --==============================================--
|
||
IF ((@REBUILDINDEX = 1) and (@return_status = 0)) BEGIN
|
||
PRINT 'Prepare to rebuild database indexes.';
|
||
|
||
BEGIN TRY
|
||
DROP TABLE #TableList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#TableList Temp table is already gone... (1)';
|
||
END CATCH;
|
||
|
||
-- Create a temporary table to hold the table names
|
||
CREATE TABLE #TableList (SchemaName NVARCHAR(50), TableName NVARCHAR(256));
|
||
|
||
-- Set the context to the specified database and fill the temporary table
|
||
SET @SQLCommand = ' INSERT INTO #TableList (SchemaName, TableName)
|
||
SELECT DISTINCT (SCHEMA_NAME([schema_id])), t.[name]
|
||
FROM [' + @DBName + '].[sys].[tables] t
|
||
INNER JOIN [' + @DBName + '].[sys].[indexes] i ON t.[object_id] = i.[object_id]
|
||
WHERE i.[type] IN (1, 2) -- Clustered and Non-Clustered indexes;';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Getting the tables was successfully done!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Getting the tables returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
IF (@return_status = 0) BEGIN
|
||
SELECT @TableListCount = COUNT(*) FROM #TableList;
|
||
PRINT 'Found: ' + convert(VARCHAR,@TableListCount) + ' tables to reindex';
|
||
END; ELSE BEGIN
|
||
SET @TableListCount = 0;
|
||
PRINT 'Found: no tables to reindex';
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping rebuilding database indexes!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
IF ((@REBUILDINDEX = 1) and (@return_status = 0) and (@TableListCount > 0)) BEGIN
|
||
|
||
DECLARE table_cursor CURSOR STATIC LOCAL FOR
|
||
SELECT SchemaName, TableName FROM #TableList;
|
||
|
||
OPEN table_cursor;
|
||
FETCH NEXT FROM table_cursor INTO @SchemaName, @TableName;
|
||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||
BEGIN TRY
|
||
|
||
PRINT 'Rebuild Index for table: ' + CONVERT(VARCHAR(1000),@TableName);
|
||
SET @SQLCommand = 'ALTER INDEX ALL ON [' + @DBName + '].[' + @SchemaName + '].[' + @TableName + '] ' +
|
||
'REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = ON)';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Recreation the database indexes of Table [' + @TableName + '] successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Recreation the database indexes of Table [' + @TableName + '] returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'table_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
-- Short break to avoid access violations
|
||
WAITFOR DELAY '00:00:03';
|
||
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
PRINT 'Closing active database connections... again';
|
||
DECLARE kill_cursor CURSOR STATIC LOCAL FOR
|
||
SELECT CONVERT(NVARCHAR(5), [session_id]) as 'SessionID',
|
||
CONVERT(NVARCHAR(50), [login_name]) as 'LoginName',
|
||
CONVERT(NVARCHAR(50), [host_name]) as 'HostName'
|
||
FROM [master].[sys].[dm_exec_sessions] (NOLOCK)
|
||
WHERE [is_user_process] = 1
|
||
AND [database_id] = db_id(@DBName)
|
||
AND [session_id] <> @MySessionID;
|
||
|
||
OPEN kill_cursor;
|
||
FETCH NEXT FROM kill_cursor INTO @SessionID, @LoginName, @HostName;
|
||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||
|
||
BEGIN TRY
|
||
|
||
SET @SQLCommand = 'KILL ' + @SessionID + ';';
|
||
PRINT 'Killing @SessionID: ' + @SessionID + ', @LoginName: ' + @LoginName + ', @HostName: ' + @HostName;
|
||
EXEC sp_executesql @SQLCommand;
|
||
SET @SQLCommand = NULL;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Closing connections to database was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Closing connections to database returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'kill_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
|
||
-- Handle any errors that occur during the process.
|
||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||
|
||
SET @SQLCommand = NULL;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL is not null) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'kill_cursor', @DBName, ERROR_MESSAGE(),@MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END CATCH;
|
||
|
||
FETCH NEXT FROM kill_cursor INTO @SessionID, @LoginName, @HostName;
|
||
|
||
END;
|
||
|
||
CLOSE kill_cursor;
|
||
DEALLOCATE kill_cursor;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
FETCH NEXT FROM table_cursor INTO @SchemaName, @TableName;
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
|
||
-- Handle any errors that occur during the process.
|
||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||
|
||
--================================================-- Log error to table --=================================================--
|
||
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'table_cursor', @DBName, ERROR_MESSAGE(),@MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
FETCH NEXT FROM table_cursor INTO @SchemaName, @TableName;
|
||
|
||
END CATCH;
|
||
|
||
END;
|
||
|
||
CLOSE table_cursor;
|
||
DEALLOCATE table_cursor;
|
||
|
||
-- Drop the temporary table
|
||
DROP TABLE #TableList;
|
||
|
||
SET @return_status_text = 'Recreation of the database indexes successfully completed!';
|
||
PRINT @return_status_text;
|
||
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping the recreation of the database indexes!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--=========================================-- Prepare to recompile Procedures --===========================================--
|
||
IF ((@RECOMPILEPROCEDURES = 1) and (@return_status = 0)) BEGIN
|
||
PRINT 'Prepare to recompile database procedures.';
|
||
|
||
BEGIN TRY
|
||
DROP TABLE #ProcedureList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#ProcedureList Temp table is already gone... (1)';
|
||
END CATCH;
|
||
|
||
-- Create a temporary table to hold the procedure names
|
||
CREATE TABLE #ProcedureList (SchemaName NVARCHAR(50), ProcedureName NVARCHAR(256));
|
||
|
||
-- Set the context to the specified database and fill the temporary table
|
||
SET @SQLCommand = ' INSERT INTO #ProcedureList (SchemaName, ProcedureName)
|
||
SELECT SPECIFIC_CATALOG, SPECIFIC_NAME
|
||
FROM [' + @DBName + '].INFORMATION_SCHEMA.ROUTINES (NOLOCK)
|
||
WHERE ROUTINE_TYPE = ''PROCEDURE''
|
||
AND SPECIFIC_NAME <> ''' + @MyProcedureName + '''
|
||
ORDER BY SPECIFIC_NAME;';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Getting the procedures was successfully done!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Getting the procedures returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
IF (@return_status = 0) BEGIN
|
||
SELECT @ProcedureListCount = COUNT(*) FROM #ProcedureList;
|
||
PRINT 'Found: ' + convert(VARCHAR,@ProcedureListCount) + ' procedures to recompile';
|
||
END; ELSE BEGIN
|
||
SET @ProcedureListCount = 0;
|
||
PRINT 'Found: no procedures to recompile';
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping recompiling procedures!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Recompile Procedures --================================================--
|
||
IF ((@RECOMPILEPROCEDURES = 1) and (@return_status = 0) and (@ProcedureListCount > 0)) BEGIN
|
||
|
||
PRINT 'Removing all procedure elements from the query plan cache.';
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC FREEPROCCACHE;';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Removing all procedure elements was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Removing all procedure elements returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'procedure_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
DECLARE procedure_cursor CURSOR STATIC LOCAL FOR
|
||
SELECT SchemaName, ProcedureName FROM #ProcedureList;
|
||
|
||
OPEN procedure_cursor;
|
||
FETCH NEXT FROM procedure_cursor INTO @SchemaName, @ProcedureName;
|
||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||
BEGIN TRY
|
||
|
||
PRINT 'Recompile procedure: ' + CONVERT(VARCHAR(1000),@ProcedureName);
|
||
SET @SQLCommand = 'USE [' + @DBName + ']; EXEC sp_recompile ''' + @ProcedureName + '''; ';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Recompiling the procedure [' + @ProcedureName + '] successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Recompiling the procedure [' + @ProcedureName + '] returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'procedure_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
FETCH NEXT FROM procedure_cursor INTO @SchemaName, @ProcedureName;
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
|
||
-- Handle any errors that occur during the process.
|
||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||
|
||
--================================================-- Log error to table --=================================================--
|
||
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'procedure_cursor', @DBName, ERROR_MESSAGE(),@MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
FETCH NEXT FROM procedure_cursor INTO @SchemaName, @ProcedureName;
|
||
|
||
END CATCH;
|
||
|
||
END;
|
||
|
||
CLOSE procedure_cursor;
|
||
DEALLOCATE procedure_cursor;
|
||
|
||
-- Drop the temporary table
|
||
DROP TABLE #ProcedureList;
|
||
|
||
SET @return_status_text = 'Recompiling of procedures successfully completed!';
|
||
PRINT @return_status_text;
|
||
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping the recompiling of the procedures!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'procedure_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--================================================-- Clear Query Cache --==================================================--
|
||
|
||
IF ((@CLEARQUERYCACHE = 1) and (@return_status = 0)) BEGIN
|
||
|
||
PRINT 'Removing the sql query cache.';
|
||
SET @SQLCommand = N'USE [' + @DBName + ']; DBCC DROPCLEANBUFFERS;';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Removing sql query cache was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Removing sql query cache returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping the query cache clearing!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--==============================================-- Change db working mode --===============================================--
|
||
IF (@FORCE = 1) BEGIN -- and ignore last result
|
||
PRINT 'Set the database back to MULTI_USER mode';
|
||
SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET MULTI_USER; ALTER DATABASE [' + @DBName + '] SET ONLINE;';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Setting the database to MULTI_USER mode was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Setting the database to MULTI_USER mode returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping to change the database mode (FORCE = OFF)!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
-- Ensure temp table is droped and cursor is closed
|
||
BEGIN TRY
|
||
DROP TABLE #DBList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#DBList Temp table are already gone...';
|
||
END CATCH;
|
||
|
||
IF (@REBUILDINDEX = 1) BEGIN
|
||
|
||
BEGIN TRY
|
||
DROP TABLE #TableList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#TableList Temp table are already gone...(1)';
|
||
END CATCH;
|
||
|
||
END;
|
||
|
||
IF (@RECOMPILEPROCEDURES = 1) BEGIN
|
||
|
||
BEGIN TRY
|
||
DROP TABLE #ProcedureList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#ProcedureList Temp table are already gone...(1)';
|
||
END CATCH;
|
||
|
||
BEGIN TRY
|
||
CLOSE procedure_cursor;
|
||
DEALLOCATE procedure_cursor;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'Procedure cursor is already closed and deallocated...(1)';
|
||
END CATCH;
|
||
|
||
END;
|
||
|
||
PRINT '-------------------------------';
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
-- Handle any errors that occur during the process.
|
||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||
|
||
--================================================-- Log error to table --=================================================--
|
||
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', 'db_cursor', @DBName, ERROR_MESSAGE(),@MyProcedureName,GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--==============================================-- Change db working mode --===============================================--
|
||
-- Ensure the database is set back to MULTI_USER mode in case of errors.
|
||
--==============================================-- Change db working mode --===============================================--
|
||
IF (@FORCE = 1) BEGIN -- and ignore last result
|
||
PRINT 'Set the database back to MULTI_USER mode';
|
||
SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET MULTI_USER; ALTER DATABASE [' + @DBName + '] SET ONLINE;';
|
||
EXEC @return_status = sp_executesql @SQLCommand;
|
||
|
||
IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN
|
||
SET @return_status_text = 'Setting the database to MULTI_USER mode was successfully completed!';
|
||
PRINT @return_status_text;
|
||
END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN
|
||
SET @return_status_text = 'Setting the database to MULTI_USER mode returns warnings or has failed, check the ID!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END; ELSE BEGIN
|
||
IF (@LOGLEVEL in ('INFO')) BEGIN
|
||
SET @return_status_text = 'Skipping to change the database mode (FORCE = OFF)!';
|
||
PRINT @return_status_text;
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--===============================================-- Log start to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--=====================================================-- Clean up --======================================================--
|
||
-- Ensure temp table is droped and cursor is closed
|
||
BEGIN TRY
|
||
DROP TABLE #DBList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#DBList Temp table are already gone...';
|
||
END CATCH;
|
||
|
||
IF (@REBUILDINDEX = 1) BEGIN
|
||
|
||
BEGIN TRY
|
||
DROP TABLE #TableList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#TableList Temp table are already gone...(2)';
|
||
END CATCH;
|
||
|
||
BEGIN TRY
|
||
CLOSE table_cursor;
|
||
DEALLOCATE table_cursor;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'Table cursor is already closed and deallocated...(2)';
|
||
END CATCH;
|
||
|
||
END;
|
||
|
||
IF (@RECOMPILEPROCEDURES = 1) BEGIN
|
||
|
||
BEGIN TRY
|
||
DROP TABLE #ProcedureList;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT '#ProcedureList Temp table are already gone...(2)';
|
||
END CATCH;
|
||
|
||
BEGIN TRY
|
||
CLOSE procedure_cursor;
|
||
DEALLOCATE procedure_cursor;
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'Procedure cursor is already closed and deallocated...(2)';
|
||
END CATCH;
|
||
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END CATCH;
|
||
|
||
FETCH NEXT FROM db_cursor INTO @DBName;
|
||
|
||
END;
|
||
|
||
CLOSE db_cursor;
|
||
DEALLOCATE db_cursor;
|
||
|
||
END; ELSE BEGIN
|
||
|
||
SET @return_status = 0;
|
||
SET @return_status_text = 'So there is nothing to do...';
|
||
PRINT @return_status_text;
|
||
|
||
--===============================================-- Log result to table --=================================================--
|
||
IF ((@LOGLEVEL in ('INFO','WARN','ERROR')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('WARN', 'db_list', 'count', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
SET @return_status_text = 'END [PRDD_MAINTAIN_DATABASES] @ ' + 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
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN
|
||
INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, 'closing', 'procedure', @return_status, @return_status_text, @MyProcedureName, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
PRINT '';
|
||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||
PRINT '===============================';
|
||
|
||
Return @return_status;
|
||
|
||
END;
|
||
GO
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
-- [PRDD_SET_STATUS_IN_THIRDPARTY_DB]
|
||
-- =================================================================
|
||
-- Set status info into a text field
|
||
--
|
||
-- Returns: 1 = SUCCESS; 0 = FAILED
|
||
-- =================================================================
|
||
-- Copyright (c) 2024 by Digital Data GmbH
|
||
--
|
||
-- Digital Data GmbH <20> Ludwig-Rinn-Strasse 16 <20> D-35452 Heuchelheim
|
||
-- Tel.: 0641/202360 <20> E-Mail: info-flow@digitaldata.works
|
||
-- =================================================================
|
||
-- Creation Date / Author: 25.11.2024 / HE,MK
|
||
-- Version Date / Editor: 14.12.2024 / HE,MK
|
||
-- Version Number: 1.1.0.0
|
||
-- =================================================================
|
||
-- History:
|
||
-- 25.11.2024 / HE,MK - First Version
|
||
-- 14.12.2024 / MK - @MyProcedureName variable implemented, Failsafe for parameters implemented
|
||
|
||
CREATE OR ALTER PROCEDURE [PRDD_SET_STATUS_IN_THIRDPARTY_DB](
|
||
@pTARGET_DB NVARCHAR(256) = '[DD_CWLDATEN_DDVP]', -- Give target DB name (without schema!)
|
||
@pTARGET_SCHEMA NVARCHAR(256) = '[dbo]', -- Give target DB schema
|
||
@pTARGET_TABLE NVARCHAR(256) = '[t025]', -- Give target DB table
|
||
@pTARGET_COLUMN NVARCHAR(256) = '[c069]', -- Give target DB column
|
||
@pTARGET_COLUMN_TYPE NVARCHAR(256) = 'NVARCHAR', -- Give target DB column type eg. INT or NVARCHAR
|
||
@pREF_DOC_TYPE NVARCHAR(256) = 'Ausgangsrechnung', -- Give REF_DOC_TYPE, eg.: Ausgangsangebot, Ausgangsauftrag, Ausgangslieferschein, Ausgangsrechnung (ONLY FOR LOGGING PURPOSE!)
|
||
@pREF_DOC_NR_COLUMN NVARCHAR(256) = '[c055]', -- Give the column where the REF_DOC_NR is stored (eg. WINLINE: Ausgangsangebot=[c043], Ausgangsauftrag=[c044], Ausgangslieferschein=[c045], Ausgangsrechnung=[c055])
|
||
@pREF_DOC_NR NVARCHAR(256), -- Give REF_DOC_NR, like 'ARE-20234187' or 'AANG-20241060'
|
||
@pADDITIONAL_WHERE NVARCHAR(256) = '', -- Give an additional WHERE clause like ' AND [COLUMN] IS NOT NULL'
|
||
@pSTATUS_VALUE NVARCHAR(256), -- Give text to write in @pTARGET_COLUMN
|
||
@pSTATUS_VALUE_MAX_LEN INT = 60, -- Give the max lenght of the target field for the status text
|
||
@pSTATUS_VALUE_DELIMITER NVARCHAR(3) = '; ', -- Give the separator to concat multiple status values, like "Text1; Text2; ..."
|
||
@pUSERNAME NVARCHAR(50), -- Give the user of the Frontend call, for the logging
|
||
@pOVERWRITE BIT = 0, -- Set overwrite for @pTARGET_COLUMN: 0 = concat; 1 = overwrite
|
||
@pLOGLEVEL NVARCHAR(25) = 'ERROR' -- Set Loglevel (ERROR or INFO) to be written to table [TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG]
|
||
)
|
||
AS
|
||
BEGIN TRY
|
||
|
||
SET NOCOUNT ON;
|
||
|
||
-- decalare new vars because of parameter sniffing
|
||
DECLARE @TARGET_DB NVARCHAR(256) = ISNULL(@pTARGET_DB,''),
|
||
@TARGET_SCHEMA NVARCHAR(256) = ISNULL(@pTARGET_SCHEMA,''),
|
||
@TARGET_TABLE NVARCHAR(256) = ISNULL(@pTARGET_TABLE,''),
|
||
@TARGET_COLUMN NVARCHAR(256) = ISNULL(@pTARGET_COLUMN,''),
|
||
@TARGET_COLUMN_TYPE NVARCHAR(256) = ISNULL(@pTARGET_COLUMN_TYPE,'NVARCHAR'),
|
||
@REF_DOC_TYPE NVARCHAR(256) = ISNULL(@pREF_DOC_TYPE,''),
|
||
@REF_DOC_NR_COLUMN NVARCHAR(256) = ISNULL(@pREF_DOC_NR_COLUMN,''),
|
||
@REF_DOC_NR NVARCHAR(256) = ISNULL(@pREF_DOC_NR,''),
|
||
@ADDITIONAL_WHERE NVARCHAR(256) = ISNULL(@pADDITIONAL_WHERE,''),
|
||
@STATUS_VALUE NVARCHAR(256) = ISNULL(@pSTATUS_VALUE,''),
|
||
@STATUS_VALUE_MAX_LEN INT = ISNULL(@pSTATUS_VALUE_MAX_LEN,60),
|
||
@STATUS_VALUE_DELIMITER NVARCHAR(3) = ISNULL(@pSTATUS_VALUE_DELIMITER,'; '),
|
||
@USERNAME NVARCHAR(50) = ISNULL(@pUSERNAME,LEFT(OBJECT_NAME(@@PROCID),50)),
|
||
@OVERWRITE BIT = ISNULL(@pOVERWRITE,0),
|
||
@LOGLEVEL NVARCHAR(25) = ISNULL(@pLOGLEVEL,'ERROR');
|
||
|
||
-- decalare runtime vars
|
||
DECLARE @MyProcedureName NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||
DECLARE @LINE_COUNT_1 INT = 0,
|
||
@LINE_COUNT_2 INT = 0,
|
||
@SQL_COMMAND NVARCHAR(2000) = NULL,
|
||
@STATUS_VALUE_OLD NVARCHAR(256) = NULL,
|
||
@RETURN_STATUS NVARCHAR(256) = NULL,
|
||
@RETURN_STATUS_VALUE NVARCHAR(256) = 'START ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||
|
||
PRINT '==============================='
|
||
PRINT 'PROCEDURE - ' + @RETURN_STATUS_VALUE;
|
||
PRINT 'PARAMETER01 - @TARGET_DB: ' + CONVERT(NVARCHAR(256),@TARGET_DB);
|
||
PRINT 'PARAMETER02 - @TARGET_SCHEMA: ' + CONVERT(NVARCHAR(256),@TARGET_SCHEMA);
|
||
PRINT 'PARAMETER03 - @TARGET_TABLE: ' + CONVERT(NVARCHAR(256),@TARGET_TABLE);
|
||
PRINT 'PARAMETER04 - @TARGET_COLUMN: ' + CONVERT(NVARCHAR(256),@TARGET_COLUMN);
|
||
PRINT 'PARAMETER05 - @TARGET_COLUMN_TYPE: ' + CONVERT(NVARCHAR(256),@TARGET_COLUMN_TYPE);
|
||
PRINT 'PARAMETER06 - @REF_DOC_TYPE: ' + CONVERT(NVARCHAR(256),@REF_DOC_TYPE);
|
||
PRINT 'PARAMETER07 - @REF_DOC_NR_COLUMN ' + CONVERT(NVARCHAR(256),@REF_DOC_NR_COLUMN);
|
||
PRINT 'PARAMETER08 - @REF_DOC_NR: ' + CONVERT(NVARCHAR(256),@REF_DOC_NR);
|
||
PRINT 'PARAMETER09 - @ADDITIONAL_WHERE ' + CONVERT(NVARCHAR(256),@ADDITIONAL_WHERE);
|
||
PRINT 'PARAMETER10 - @STATUS_VALUE: ' + CONVERT(NVARCHAR(256),@STATUS_VALUE);
|
||
PRINT 'PARAMETER11 - @STATUS_VALUE_MAX_LEN ' + CONVERT(NVARCHAR(256),@STATUS_VALUE_MAX_LEN);
|
||
PRINT 'PARAMETER12 - @STATUS_VALUE_DELIMITER ' + CONVERT(NVARCHAR(3),@STATUS_VALUE_DELIMITER);
|
||
PRINT 'PARAMETER13 - @USERNAME: ' + CONVERT(NVARCHAR(50),@USERNAME);
|
||
PRINT 'PARAMETER14 - @OVERWRITE: ' + CONVERT(NVARCHAR(1),@OVERWRITE);
|
||
PRINT 'PARAMETER15 - @LOGLEVEL: ' + CONVERT(NVARCHAR(25),@LOGLEVEL);
|
||
|
||
--==============================================-- Prepare the log table --================================================--
|
||
IF (@LOGLEVEL is not NULL) BEGIN
|
||
PRINT '';
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG') BEGIN
|
||
PRINT 'Log table already exists';
|
||
|
||
END; ELSE BEGIN
|
||
PRINT 'Log table does not exists, trying to create...';
|
||
|
||
CREATE TABLE [dbo].[TBDD_SET_STATUS_IN_THIRDPARTY_DB_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_SET_STATUS_IN_THIRDPARTY_DB_LOG] PRIMARY KEY CLUSTERED
|
||
(
|
||
[GUID] ASC
|
||
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
|
||
|
||
ALTER TABLE [dbo].[TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG] ADD CONSTRAINT [DF_TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO];
|
||
|
||
ALTER TABLE [dbo].[TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG] ADD CONSTRAINT [DF_TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN];
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--=====================================================-- main part --=====================================================--
|
||
PRINT 'Check if there is a valid target...'
|
||
SET @SQL_COMMAND = N'SELECT @LINE_COUNT_1 = count(*)
|
||
FROM ' + @TARGET_DB + '.' + @TARGET_SCHEMA + '.' + @TARGET_TABLE + '
|
||
WHERE ' + @REF_DOC_NR_COLUMN + ' = ''' + @REF_DOC_NR + ''' ' + @ADDITIONAL_WHERE;
|
||
PRINT 'Build Query @SQL_COMMAND: ' + @SQL_COMMAND;
|
||
EXEC @RETURN_STATUS = sp_executesql @SQL_COMMAND,N'@LINE_COUNT_1 INT OUTPUT', @LINE_COUNT_1 OUTPUT;
|
||
|
||
IF (@RETURN_STATUS = 0) BEGIN
|
||
IF (@LINE_COUNT_1 > 0) BEGIN
|
||
PRINT 'Found: ' + CONVERT(NVARCHAR(25),@LINE_COUNT_1) + ' docs to update!';
|
||
PRINT 'Checking if docs have a existing "status text"';
|
||
SET @SQL_COMMAND = N'SELECT @LINE_COUNT_2 = count(*)
|
||
FROM ' + @TARGET_DB + '.' + @TARGET_SCHEMA + '.' + @TARGET_TABLE + '
|
||
WHERE ' + @REF_DOC_NR_COLUMN + ' = ''' + @REF_DOC_NR + '''
|
||
AND (' + @TARGET_COLUMN + ' = ''' + @STATUS_VALUE + '''
|
||
OR ' + @TARGET_COLUMN + ' LIKE ''%' + @STATUS_VALUE + '''
|
||
OR ' + @TARGET_COLUMN + ' LIKE ''' + @STATUS_VALUE + '%''
|
||
OR ' + @TARGET_COLUMN + ' LIKE ''%' + @STATUS_VALUE + '%'') '
|
||
+ @ADDITIONAL_WHERE;
|
||
PRINT 'Build "status text" Query @SQL_COMMAND: ' + @SQL_COMMAND;
|
||
EXEC @RETURN_STATUS = sp_executesql @SQL_COMMAND,N'@LINE_COUNT_2 INT OUTPUT', @LINE_COUNT_2 OUTPUT;
|
||
|
||
IF (@RETURN_STATUS = 0) BEGIN
|
||
PRINT 'Query was successful!';
|
||
PRINT 'Found: ' + CONVERT(NVARCHAR(25),@LINE_COUNT_2) + ' docs with the status text duplicate!';
|
||
|
||
IF (@LINE_COUNT_2 > 0) BEGIN
|
||
PRINT 'Given status text is already there, no update needed!';
|
||
SET @RETURN_STATUS = 1;
|
||
|
||
END; ELSE BEGIN
|
||
PRINT 'Given status text is not there, update needed!';
|
||
|
||
IF ((@OVERWRITE = 0) and (@LINE_COUNT_1 > 0)) BEGIN
|
||
SET @SQL_COMMAND = N'SELECT TOP 1 @STATUS_VALUE_OLD = ' + @TARGET_COLUMN + '
|
||
FROM ' + @TARGET_DB + '.' + @TARGET_SCHEMA + '.' + @TARGET_TABLE + '
|
||
WHERE ' + @REF_DOC_NR_COLUMN + ' = ''' + @REF_DOC_NR + '''
|
||
AND ' + @TARGET_COLUMN + ' IS NOT NULL
|
||
AND ' + @TARGET_COLUMN + ' <> '''' '
|
||
+ @ADDITIONAL_WHERE;
|
||
PRINT 'Build "status text" Query for existing values @SQL_COMMAND: ' + @SQL_COMMAND;
|
||
PRINT 'Found: ' + CONVERT(NVARCHAR(25),@LINE_COUNT_1) + ' docs with a existing status text!';
|
||
EXEC @RETURN_STATUS = sp_executesql @SQL_COMMAND,N'@STATUS_VALUE_OLD NVARCHAR(256) OUTPUT', @STATUS_VALUE_OLD OUTPUT;
|
||
|
||
IF ((@RETURN_STATUS = 0)) BEGIN
|
||
PRINT 'Query was successful!';
|
||
|
||
IF (@STATUS_VALUE_OLD <> @STATUS_VALUE) BEGIN
|
||
PRINT 'Extending status text';
|
||
SET @STATUS_VALUE = concat(@STATUS_VALUE_OLD,@STATUS_VALUE_DELIMITER,@STATUS_VALUE);
|
||
END;
|
||
|
||
SET @STATUS_VALUE = CASE WHEN LEFT(@STATUS_VALUE,2) = @STATUS_VALUE_DELIMITER
|
||
THEN SUBSTRING(@STATUS_VALUE, 2, LEN(@STATUS_VALUE)-2)
|
||
ELSE @STATUS_VALUE
|
||
END;
|
||
END; ELSE BEGIN
|
||
PRINT 'Query has failed!';
|
||
PRINT '@STATUS_VALUE keeps untouched!';
|
||
END;
|
||
|
||
END; ELSE IF ((@OVERWRITE = 1) or (@LINE_COUNT_1 = 0)) BEGIN
|
||
PRINT 'Overwrite is enabled and or no doc with existing status text found!';
|
||
END;
|
||
|
||
--===========================================-- data collected updating row --=============================================--
|
||
|
||
-- Check STATUS TEXT for its lenght
|
||
SET @STATUS_VALUE = LTRIM(RTRIM(convert(NVARCHAR(MAX),@STATUS_VALUE)))
|
||
IF (LEN(@STATUS_VALUE) > @STATUS_VALUE_MAX_LEN) BEGIN
|
||
SET @STATUS_VALUE = LEFT(@STATUS_VALUE,@STATUS_VALUE_MAX_LEN);
|
||
END;
|
||
|
||
SET @SQL_COMMAND = N'SET NOCOUNT ON; UPDATE ' + @TARGET_DB + '.' + @TARGET_SCHEMA + '.' + @TARGET_TABLE + ' ';
|
||
|
||
IF (@TARGET_COLUMN_TYPE LIKE '%INT%') BEGIN
|
||
SET @STATUS_VALUE = convert(INT,@STATUS_VALUE);
|
||
SET @SQL_COMMAND += ' SET ' + @TARGET_COLUMN + ' = ' + @STATUS_VALUE;
|
||
END; ELSE BEGIN
|
||
-- NVARCHAR is always the failsafe
|
||
SET @SQL_COMMAND += ' SET ' + @TARGET_COLUMN + ' = ''' + @STATUS_VALUE + '''';
|
||
END;
|
||
|
||
SET @SQL_COMMAND += ' WHERE ' + @REF_DOC_NR_COLUMN + ' = ''' + @REF_DOC_NR + ''' ' + @ADDITIONAL_WHERE;
|
||
PRINT 'Build Update @SQL_COMMAND: ' + @SQL_COMMAND;
|
||
EXEC @RETURN_STATUS = sp_executesql @SQL_COMMAND;
|
||
|
||
IF (@RETURN_STATUS = 0) BEGIN
|
||
PRINT 'Update was successful!';
|
||
SET @RETURN_STATUS = 1;
|
||
END; ELSE BEGIN
|
||
PRINT 'Update has failed!';
|
||
PRINT '@RETURN_STATUS: ' + CONVERT(NVARCHAR(50),@RETURN_STATUS);
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
PRINT 'Query has failed!';
|
||
SET @RETURN_STATUS = 0;
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
PRINT 'No doc were found!';
|
||
SET @RETURN_STATUS = 0;
|
||
END;
|
||
|
||
END; ELSE BEGIN
|
||
PRINT 'Error at dynamic SQL!';
|
||
SET @RETURN_STATUS = 0;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
IF (@RETURN_STATUS = 1) BEGIN
|
||
SET @RETURN_STATUS_VALUE = 'SUCCESS';
|
||
END; ELSE BEGIN
|
||
SET @RETURN_STATUS_VALUE = 'FAILED';
|
||
END;
|
||
|
||
PRINT '';
|
||
PRINT 'PROCEDURE Result: ' + @RETURN_STATUS_VALUE;
|
||
PRINT 'PROCEDURE - END ' + @MyProcedureName + ' @ ' + CONVERT(NVARCHAR(50),GETDATE(),120);
|
||
PRINT '===============================';
|
||
|
||
--==============================================-- Log result to table --===============================================--
|
||
|
||
IF (@LOGLEVEL in ('INFO','WARN')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG') BEGIN
|
||
INSERT INTO [TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [MESSAGE5], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES (@LOGLEVEL, concat(@TARGET_DB,'.',@TARGET_SCHEMA,'.',@TARGET_TABLE,'.',@TARGET_COLUMN), concat(@REF_DOC_TYPE,' - Nr: ',@REF_DOC_NR), @STATUS_VALUE, 'OVERWRITE = ' + convert(varchar,@OVERWRITE), @RETURN_STATUS_VALUE, @USERNAME ,GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
RETURN @RETURN_STATUS; -- Because of the target index in windream!
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
|
||
-- Handle any errors that occur during the process.
|
||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||
|
||
--================================================-- Log error to table --=================================================--
|
||
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG') BEGIN
|
||
INSERT INTO [TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [MESSAGE5], [ADDED_WHO], [ADDED_WHEN])
|
||
VALUES ('ERROR', concat(@TARGET_DB,'.',@TARGET_SCHEMA,'.',@TARGET_TABLE,'.',@TARGET_COLUMN), concat(@REF_DOC_TYPE,' - Nr: ',@REF_DOC_NR), @STATUS_VALUE, 'OVERWRITE = ' + convert(NVARCHAR,@OVERWRITE), ERROR_MESSAGE(), @USERNAME, GetDate());
|
||
END;
|
||
END;
|
||
-----------------------------------------------------------------------------------------------------------------------------
|
||
|
||
PRINT '';
|
||
PRINT 'PROCEDURE Result: ERROR! ' + ERROR_MESSAGE();
|
||
PRINT 'PROCEDURE - END ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||
PRINT '===============================';
|
||
|
||
RETURN 0; -- Because of the target index in windream!
|
||
|
||
END CATCH;
|
||
GO
|
||
|
||
CREATE OR ALTER FUNCTION [dbo].[FNDD_LOGIN_USER_MODULE] (@pUSERNAME VARCHAR(100), @pMODULE_SHORT_NAME VARCHAR(10),@pCLIENTID INTEGER)
|
||
RETURNS @Table TABLE
|
||
(SequentialOrder INT IDENTITY(1, 1),
|
||
USER_ID INTEGER,
|
||
USER_PRENAME VARCHAR(50),
|
||
USER_SURNAME VARCHAR(50),
|
||
USER_SHORTNAME VARCHAR(50),
|
||
USER_EMAIL VARCHAR(100),
|
||
USER_LANGUAGE VARCHAR(10),
|
||
USER_LANGUAGE_ID TINYINT NOT NULL DEFAULT 1,
|
||
USER_DATE_FORMAT VARCHAR(10),
|
||
USER_RIGHT_FILE_DEL BIT,
|
||
MODULE_ACCESS BIT,
|
||
IS_ADMIN BIT,
|
||
USERCOUNT_LOGGED_IN INTEGER,
|
||
COMMENT VARCHAR(500),
|
||
USER_RIGHT2 BIT NOT NULL DEFAULT 1,
|
||
USER_RIGHT3 BIT NOT NULL DEFAULT 0,
|
||
USER_RIGHT4 BIT NOT NULL DEFAULT 0,
|
||
USER_RIGHT5 BIT NOT NULL DEFAULT 0,
|
||
WORKING_MODE VARCHAR(5000) NOT NULL DEFAULT ''
|
||
,ADDITIONAL_TITLE VARCHAR(200))
|
||
AS
|
||
BEGIN
|
||
/*
|
||
This function checks all user-relevant relations an
|
||
*/
|
||
DECLARE
|
||
@RESULT VARCHAR(500),
|
||
@USER_ID INTEGER,
|
||
@USER_PRENAME VARCHAR(50),
|
||
@USER_SURNAME VARCHAR(50),
|
||
@USER_SHORTNAME VARCHAR(50),
|
||
@USER_EMAIL VARCHAR(50),
|
||
@USER_LANGUAGE VARCHAR(10),
|
||
@USER_LANGUAGE_ID TINYINT,
|
||
@USER_DATE_FORMAT VARCHAR(10),
|
||
@IS_IN_MODULE BIT,
|
||
@IS_ADMIN BIT,
|
||
@USER_RIGHT_FILE_DEL BIT,
|
||
@USER_RIGHT2 BIT,
|
||
@USER_RIGHT3 BIT,
|
||
@USER_RIGHT4 BIT,
|
||
@USER_RIGHT5 BIT,
|
||
@USERCOUNT_LOGGED_IN INTEGER,
|
||
@MODULE_NAME VARCHAR(100),
|
||
@MODULE_GUID INTEGER,
|
||
@USER_GROUPNAME VARCHAR(100),
|
||
@ADMIN_GROUPNAME VARCHAR(100),
|
||
@WORKING_MODE VARCHAR(1000),
|
||
@ADDITIONAL_TITLE VARCHAR(500)
|
||
--'PM#NO_MASS_VALIDATOR;PM#FORCE_LAYOUT_OVERVIEW;PM#NO_CHARTS;PM#DEBUG_LOG'
|
||
SET @ADDITIONAL_TITLE = ''
|
||
SET @USER_RIGHT2 = 1 --= DocumentPropertyView only View
|
||
SET @USER_RIGHT3 = 0
|
||
SET @USER_RIGHT4 = 0
|
||
SET @USER_RIGHT5 = 0
|
||
DECLARE @CONN_ID_IDB INTEGER
|
||
SELECT @CONN_ID_IDB = GUID FROM TBDD_CONNECTION WHERE BEZEICHNUNG = 'IDB'
|
||
|
||
|
||
SET @WORKING_MODE = ''
|
||
IF @pMODULE_SHORT_NAME = 'PM'
|
||
BEGIN
|
||
SET @WORKING_MODE = 'OPERATION_MODE_FS=IDB_WM#PM.IDBWITHWMFS#PM.IDB_CONID!' + CONVERT(VARCHAR(2),@CONN_ID_IDB) +
|
||
'#PM.NO_MASS_VALIDATOR' --#PM.NO_CHARTS#PM.DEBUG_LOG#PM.FORCE_LAYOUT_OVERVIEW#PM.IDBWITHWMFS
|
||
+'#PM.MONITORING#PM.COLORSCHEME=Purple#PM.CONV_IDENTIFICATION=Email#PM.INACTIVITY_DURATION=9#PM.COL_LAST_EDITED=[Zuletzt bearbeitet]#PM.COL_LAST_ADDED=[Addedwhen]' --#PM.NO_BASICCONF#PM.NO_DETAIL_PROFILES --PM.SYS_LOCKED_MAINTENANCE#
|
||
+'#PM.SEARCH1=Starte Suche 1~MyExePath\Folder\myexe.exe%--start-search=id|7~doctype|ARE#PM.GHOSTMODE' --#PM.DEBUG_LOG
|
||
+ '#PM.TRAFFICLIGHT_ICON=False#PM.START_CW=Start Globale Suche~-1#PM.RibbonPageCustTitle=WISAG#PM.RibbonPageCustItm1=Anh<6E>nge#PM.ButtonExport2FolderCaption=Export Y:#PM.ButtonExport2Folder_RootFolder=S#PM.ButtonExport2Folder_Mode=Convert to PDF'
|
||
SET @ADDITIONAL_TITLE = 'Mein Workflow zur Demo'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'CW'
|
||
SET @WORKING_MODE = 'NOMATCH_INFO=False#HotkeySearchKey=d#NotifyMode=Msgbox'--#NotifyMode=NotifyIcon'
|
||
ELSE IF @pMODULE_SHORT_NAME = 'ZF'
|
||
SET @WORKING_MODE = 'NO_BASICCONF#NOMATCH_INFO=False#SEARCH_STRING_ATTRID=1,2#SEARCH_INT_ATTRID=5'
|
||
SET @USER_ID = 0
|
||
SET @IS_ADMIN = 0
|
||
SET @IS_IN_MODULE = 0
|
||
SET @USERCOUNT_LOGGED_IN = 0
|
||
SET @RESULT = ''
|
||
IF @pMODULE_SHORT_NAME = 'PM'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'PM_USER'
|
||
SET @ADMIN_GROUPNAME = 'PM_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'CW'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'CW_USER'
|
||
SET @ADMIN_GROUPNAME = 'CW_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'ADDI'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'ADDI_USER'
|
||
SET @ADMIN_GROUPNAME = 'ADDI_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'fileFLOW'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'fileFLOW_USER'
|
||
SET @ADMIN_GROUPNAME = 'fileFLOW_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'UM'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'XXXX'
|
||
SET @ADMIN_GROUPNAME = 'UM_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'SIG_ENV_CR'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'ENVELOPE-CREATOR'
|
||
SET @ADMIN_GROUPNAME = 'XXXX'
|
||
END
|
||
|
||
|
||
SELECT @MODULE_GUID = GUID, @MODULE_NAME = NAME FROM TBDD_MODULES WHERE SHORT_NAME = @pMODULE_SHORT_NAME
|
||
|
||
IF NOT EXISTS(SELECT GUID FROM TBDD_USER WHERE UPPER(USERNAME) = UPPER(@pUSERNAME))
|
||
BEGIN
|
||
SET @RESULT = 'USER NOT CONFIGURED OR LISTED'
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
SELECT @USER_ID = T.GUID,@USER_PRENAME = T.PRENAME,
|
||
@USER_SURNAME = T.NAME
|
||
,@USER_SHORTNAME = T.SHORTNAME
|
||
,@USER_EMAIL = T.EMAIL
|
||
,@USER_LANGUAGE = T.LANGUAGE
|
||
,@USER_DATE_FORMAT = T.DATE_FORMAT
|
||
FROM TBDD_USER T WHERE UPPER(USERNAME) = UPPER(@pUSERNAME)
|
||
|
||
IF @USER_LANGUAGE = 'de-DE'
|
||
SET @USER_LANGUAGE_ID = 1
|
||
ELSE IF @USER_LANGUAGE = 'en-US'
|
||
SET @USER_LANGUAGE_ID = 2
|
||
ELSE IF @USER_LANGUAGE = 'fr-FR'
|
||
SET @USER_LANGUAGE_ID = 3
|
||
--IF @USER_ID = 1
|
||
-- SET @USER_LANGUAGE = 'en-US'
|
||
--##### LICENSE COUNT
|
||
SELECT @USERCOUNT_LOGGED_IN = COUNT(*) FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER(@MODULE_NAME) AND CLIENT_ID = @pCLIENTID
|
||
--CHECK USER <20>S IN MODULE_USER_GROUP
|
||
IF EXISTS(select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = @USER_ID AND UPPER(T.NAME) = @USER_GROUPNAME)
|
||
BEGIN
|
||
SET @IS_IN_MODULE = 1
|
||
SET @RESULT = 'User is part of Group (' + @USER_GROUPNAME + ')'
|
||
IF EXISTS(select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID)
|
||
BEGIN
|
||
SET @RESULT = @RESULT + '| User is also configured in User-Modules'
|
||
select @IS_ADMIN = T.IS_ADMIN,@USER_RIGHT_FILE_DEL = T.RIGHT1 from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID
|
||
END
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
SET @RESULT = 'User not part of group (' + @USER_GROUPNAME + ')'
|
||
IF EXISTS(select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID)
|
||
BEGIN
|
||
SET @RESULT = @RESULT + '| BUT User configured in User-Modules'
|
||
select @IS_ADMIN = T.IS_ADMIN,@USER_RIGHT_FILE_DEL = T.RIGHT1
|
||
--,@USER_RIGHT2 = T.RIGHT2
|
||
from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID
|
||
END
|
||
END
|
||
|
||
IF EXISTS(select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = @USER_ID AND UPPER(T.NAME) = @ADMIN_GROUPNAME)
|
||
BEGIN
|
||
SET @RESULT = @RESULT + '| User is part of group (' + @ADMIN_GROUPNAME + ')'
|
||
SET @IS_ADMIN = 1
|
||
SET @IS_IN_MODULE = 1
|
||
END
|
||
|
||
END
|
||
|
||
INSERT INTO @Table (USER_ID,USER_PRENAME, USER_SURNAME,USER_SHORTNAME,USER_EMAIL,USER_LANGUAGE,USER_LANGUAGE_ID, USER_DATE_FORMAT, USER_RIGHT_FILE_DEL,
|
||
MODULE_ACCESS,IS_ADMIN,USERCOUNT_LOGGED_IN, COMMENT,WORKING_MODE,USER_RIGHT2,USER_RIGHT3,USER_RIGHT4,USER_RIGHT5
|
||
,ADDITIONAL_TITLE)
|
||
VALUES (@USER_ID,@USER_PRENAME,@USER_SURNAME,@USER_SHORTNAME,@USER_EMAIL,@USER_LANGUAGE,@USER_LANGUAGE_ID,@USER_DATE_FORMAT,@USER_RIGHT_FILE_DEL,
|
||
@IS_IN_MODULE,@IS_ADMIN,@USERCOUNT_LOGGED_IN,@RESULT,@WORKING_MODE,@USER_RIGHT2,@USER_RIGHT3,@USER_RIGHT4,@USER_RIGHT5
|
||
,@ADDITIONAL_TITLE)
|
||
|
||
RETURN
|
||
END
|
||
GO
|
||
|
||
CREATE VIEW VWDD_USER_GROUP_MODULE
|
||
AS
|
||
select
|
||
T1.NAME AS GROUP_NAME,
|
||
TU.*
|
||
FROM
|
||
TBDD_GROUPS_USER T,
|
||
TBDD_GROUPS T1,
|
||
TBDD_USER TU
|
||
WHERE
|
||
TU.NAME IS NOT NULL
|
||
AND TU.PRENAME IS NOT NULL
|
||
AND T1.INTERNAL = 1
|
||
AND T.GROUP_ID = T1.GUID
|
||
AND T.USER_ID = TU.GUID
|
||
--AND T1.NAME IN ('CW_USER','CW_ADMINS')
|
||
|
||
UNION
|
||
|
||
SELECT
|
||
T2.NAME AS GROUP_MODULE,
|
||
TU.*
|
||
|
||
FROM
|
||
TBDD_USER TU,
|
||
TBDD_USER_MODULES T1,
|
||
TBDD_MODULES T2
|
||
WHERE
|
||
TU.NAME IS NOT NULL
|
||
AND TU.PRENAME IS NOT NULL
|
||
AND TU.GUID = T1.USER_ID
|
||
AND T1.MODULE_ID = T2.GUID
|
||
GO
|
||
CREATE VIEW VWDD_USER_MODULE_CW
|
||
AS
|
||
SELECT
|
||
DISTINCT GUID ,
|
||
USERNAME,
|
||
NAME,
|
||
PRENAME,
|
||
EMAIL
|
||
FROM
|
||
VWDD_USER_GROUP_MODULE
|
||
WHERE
|
||
GROUP_NAME IN ('Clipboard-Watcher','CW_USER','CW_ADMINS')
|
||
GO
|
||
CREATE FUNCTION [dbo].[FNDD_GET_USER_FOR_GROUP] (@pGROUP_ID INTEGER,@pONLY_FREE BIT)
|
||
RETURNS @Table TABLE
|
||
(USER_ID INTEGER,
|
||
USER_PRENAME VARCHAR(50),
|
||
USER_SURNAME VARCHAR(50),
|
||
USER_SHORTNAME VARCHAR(50),
|
||
USER_EMAIL VARCHAR(100),
|
||
USER_LANGUAGE VARCHAR(10),
|
||
COMMENT VARCHAR(500))
|
||
AS
|
||
BEGIN
|
||
IF @pONLY_FREE = 1
|
||
INSERT INTO @Table (USER_ID,USER_PRENAME,USER_SURNAME,USER_SHORTNAME,USER_EMAIL,USER_LANGUAGE,COMMENT)
|
||
select T.GUID, T.PRENAME, T.NAME, T.SHORTNAME, T.EMAIL,T.LANGUAGE, T.COMMENT FROM TBDD_USER T, TBDD_GROUPS_USER T1 WHERE T1.USER_ID = T.GUID AND
|
||
T.GUID NOT IN (SELECT USER_ID FROM TBDD_GROUPS_USER WHERE GROUP_ID = @pGROUP_ID)
|
||
ELSE
|
||
INSERT INTO @Table (USER_ID,USER_PRENAME,USER_SURNAME,USER_SHORTNAME,USER_EMAIL,USER_LANGUAGE,COMMENT)
|
||
select T.GUID, T.PRENAME, T.NAME, T.SHORTNAME, T.EMAIL,T.LANGUAGE, T.COMMENT FROM TBDD_USER T, TBDD_GROUPS_USER T1 WHERE T1.USER_ID = T.GUID AND T1.GROUP_ID = @pGROUP_ID
|
||
|
||
RETURN
|
||
END
|
||
GO
|
||
|
||
-- 20.09.2024 MS fileFLOW as Module
|
||
ALTER FUNCTION [dbo].[FNDD_GET_USER_FOR_MODULE] (@pMODULE_SHORT_NAME VARCHAR(10),@pCLIENTID INTEGER)
|
||
RETURNS
|
||
@Table TABLE
|
||
(SequentialOrder INT IDENTITY(1, 1),
|
||
USER_ID INTEGER,
|
||
USER_NAME VARCHAR(50),
|
||
USER_PRENAME VARCHAR(50),
|
||
USER_SURNAME VARCHAR(50),
|
||
USER_SHORTNAME VARCHAR(50),
|
||
USER_EMAIL VARCHAR(100),
|
||
USER_LANGUAGE VARCHAR(10),
|
||
USER_RIGHT_FILE_DEL BIT,
|
||
MODULE_ACCESS BIT,
|
||
IS_ADMIN BIT,
|
||
USER_COMMENT VARCHAR(500),
|
||
COMMENT VARCHAR(500))
|
||
AS
|
||
BEGIN
|
||
/*
|
||
This function checks all user-relevant relations an
|
||
*/
|
||
DECLARE
|
||
@RESULT VARCHAR(500),
|
||
@USER_ID INTEGER,
|
||
@USER_NAME VARCHAR(50),
|
||
@USER_PRENAME VARCHAR(50),
|
||
@USER_SURNAME VARCHAR(50),
|
||
@USER_SHORTNAME VARCHAR(50),
|
||
@USER_EMAIL VARCHAR(50),
|
||
@USER_LANGUAGE VARCHAR(10),
|
||
@IS_IN_MODULE BIT,
|
||
@IS_ADMIN BIT,
|
||
@USER_RIGHT_FILE_DEL BIT,
|
||
@MODULE_NAME VARCHAR(100),
|
||
@MODULE_GUID INTEGER,
|
||
@USER_GROUPNAME VARCHAR(100),
|
||
@ADMIN_GROUPNAME VARCHAR(100),
|
||
@USER_COMMENT VARCHAR(500)
|
||
|
||
IF @pMODULE_SHORT_NAME = 'PM'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'PM_USER'
|
||
SET @ADMIN_GROUPNAME = 'PM_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'CW'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'CW_USER'
|
||
SET @ADMIN_GROUPNAME = 'CW_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'ADDI'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'ADDI_USER'
|
||
SET @ADMIN_GROUPNAME = 'ADDI_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'fileFLOW'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'fileFLOW_USER'
|
||
SET @ADMIN_GROUPNAME = 'fileFLOW_ADMINS'
|
||
END
|
||
ELSE IF @pMODULE_SHORT_NAME = 'UM'
|
||
BEGIN
|
||
SET @USER_GROUPNAME = 'XXXX'
|
||
SET @ADMIN_GROUPNAME = 'UM_ADMINS'
|
||
END
|
||
SELECT @MODULE_GUID = GUID, @MODULE_NAME = NAME FROM TBDD_MODULES WHERE SHORT_NAME = @pMODULE_SHORT_NAME
|
||
|
||
DECLARE cursor_user CURSOR FOR
|
||
select GUID, ISNULL(PRENAME,'no prename'), ISNULL(NAME,'no name'), ISNULL(SHORTNAME,'no shortname'), ISNULL(EMAIL,'no email'), LANGUAGE,USERNAME,COMMENT from TBDD_USER
|
||
OPEN cursor_user
|
||
FETCH NEXT FROM cursor_user INTO @USER_ID,@USER_PRENAME,@USER_SURNAME,@USER_SHORTNAME,@USER_EMAIL,@USER_LANGUAGE,@USER_NAME,@USER_COMMENT
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
SET @IS_ADMIN = 0
|
||
SET @IS_IN_MODULE = 0
|
||
SET @RESULT = ''
|
||
--CHECK USER IS IN MODULE_USER_GROUP
|
||
IF EXISTS(select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = @USER_ID AND UPPER(T.NAME) = @USER_GROUPNAME)
|
||
BEGIN
|
||
SET @IS_IN_MODULE = 1
|
||
SET @RESULT = 'User is part of Group (' + @USER_GROUPNAME + ')'
|
||
IF EXISTS(select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID)
|
||
BEGIN
|
||
SET @RESULT = @RESULT + '| User is also configured in User-Modules (Unnecessary)'
|
||
select @IS_ADMIN = T.IS_ADMIN,@USER_RIGHT_FILE_DEL = T.RIGHT1 from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID
|
||
|
||
END
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
SET @RESULT = 'User <' + CONVERT(VARCHAR(10),@USER_ID) + ' - ' + @USER_NAME + '> not part of group (' + @USER_GROUPNAME + ')'
|
||
IF EXISTS(select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID)
|
||
BEGIN
|
||
SET @RESULT = @RESULT + '| BUT User configured in User-Modules'
|
||
select @IS_ADMIN = T.IS_ADMIN,@USER_RIGHT_FILE_DEL = T.RIGHT1 from TBDD_USER_MODULES T WHERE T.USER_ID = @USER_ID AND T.MODULE_ID = @MODULE_GUID
|
||
SET @IS_IN_MODULE = 1
|
||
END
|
||
END
|
||
|
||
IF EXISTS(select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = @USER_ID AND UPPER(T.NAME) = @ADMIN_GROUPNAME)
|
||
BEGIN
|
||
SET @RESULT = @RESULT + '| User is part of group (' + @ADMIN_GROUPNAME + ')'
|
||
SET @IS_ADMIN = 1
|
||
SET @IS_IN_MODULE = 1
|
||
END
|
||
--PRINT @RESULT
|
||
IF @IS_IN_MODULE = 1
|
||
INSERT INTO @Table (USER_ID,USER_NAME, USER_PRENAME, USER_SURNAME,USER_SHORTNAME,USER_EMAIL,USER_LANGUAGE, USER_RIGHT_FILE_DEL, MODULE_ACCESS,IS_ADMIN,USER_COMMENT,COMMENT)
|
||
VALUES (@USER_ID,@USER_NAME,@USER_PRENAME,@USER_SURNAME,@USER_SHORTNAME,@USER_EMAIL,@USER_LANGUAGE,@USER_RIGHT_FILE_DEL,@IS_IN_MODULE,@IS_ADMIN,@USER_COMMENT,@RESULT)
|
||
FETCH NEXT FROM cursor_user INTO @USER_ID,@USER_PRENAME,@USER_SURNAME,@USER_SHORTNAME,@USER_EMAIL,@USER_LANGUAGE,@USER_NAME,@USER_COMMENT
|
||
END
|
||
CLOSE cursor_user
|
||
DEALLOCATE cursor_user
|
||
RETURN
|
||
END
|
||
GO
|
||
|
||
CREATE FUNCTION [dbo].[FNDD_LANGUAGE_PHRASE](@pTITLE VARCHAR(100),@pLANG_CODE VARCHAR(5), @pMODULE VARCHAR(10))
|
||
RETURNS VARCHAR(500)
|
||
AS
|
||
BEGIN
|
||
DECLARE @RESULT VARCHAR(250), @CTRL_CONFIG_TITLE VARCHAR(100)
|
||
|
||
SELECT @RESULT = STRING1 FROM TBDD_GUI_LANGUAGE_PHRASE
|
||
WHERE MODULE = @pMODULE AND TITLE = @pTITLE
|
||
AND [LANGUAGE] = @pLANG_CODE
|
||
IF LEN(@RESULT) > 0
|
||
SET @RESULT = @RESULT
|
||
ELSE
|
||
BEGIN
|
||
SELECT @RESULT = STRING1 FROM TBDD_GUI_LANGUAGE_PHRASE
|
||
WHERE MODULE = @pMODULE AND TITLE = @pTITLE
|
||
AND [LANGUAGE] = 'de-DE'
|
||
SET @RESULT = @RESULT + ' (NoLangConf)'
|
||
END
|
||
|
||
RETURN @RESULT
|
||
END
|
||
GO
|
||
|
||
CREATE PROCEDURE [dbo].[PRDD_GUI_LANGUAGE_PHRASE] (@pMODULE VARCHAR(10),@pTITLE VARCHAR(100),@pLANG_CODE VARCHAR(5),@pCAPTION_TYPE VARCHAR(50),@pSTRING1 VARCHAR(900),@pSTRING2 VARCHAR(900),@pWHO VARCHAR(100)
|
||
,@pOBJ_NAME VARCHAR(100),@pINTERNAL BIT)
|
||
AS
|
||
If NOT EXISTS(SELECT GUID FROm TBDD_GUI_LANGUAGE_PHRASE WHERE [MODULE] = @pMODULE AND TITLE = @pTITLE AND [LANGUAGE] = @pLANG_CODE)
|
||
INSERT INTO [dbo].[TBDD_GUI_LANGUAGE_PHRASE]
|
||
([MODULE]
|
||
,[TITLE]
|
||
,[LANGUAGE]
|
||
,[CAPT_TYPE]
|
||
,[STRING1]
|
||
,STRING2
|
||
,[ADDED_WHO]
|
||
,[OBJ_NAME],INTERNAL) VALUES
|
||
(@pMODULE,@pTITLE,@pLANG_CODE,@pCAPTION_TYPE,@pSTRING1,@pSTRING2,@pWHO,@pOBJ_NAME,@pINTERNAL)
|
||
ELSE
|
||
UPDATE [dbo].[TBDD_GUI_LANGUAGE_PHRASE] SET [CAPT_TYPE] = @pCAPTION_TYPE
|
||
,[STRING1] = @pSTRING1
|
||
,STRING2 = @pSTRING2
|
||
,CHANGED_WHO = @pWHO
|
||
,[OBJ_NAME] = @pOBJ_NAME,INTERNAL = @pINTERNAL WHERE
|
||
[MODULE] = @pMODULE AND TITLE = @pTITLE AND [LANGUAGE] = @pLANG_CODE
|
||
GO
|
||
IF NOT EXISTS(SELECT 1 FROM sys.columns
|
||
WHERE Name = N'ARCHIVE_FOLDER'
|
||
AND Object_ID = Object_ID(N'dbo.TBDD_EMAIL_ACCOUNT'))
|
||
BEGIN
|
||
-- Column Exists
|
||
ALTER TABLE TBDD_EMAIL_ACCOUNT ADD ARCHIVE_FOLDER VARCHAR(100) NOT NULL DEFAULT ''
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_LANGUAGE
|
||
(
|
||
GUID TINYINT NOT NULL IDENTITY (1, 1),
|
||
LANG_CODE VARCHAR(10) NOT NULL,
|
||
CREATE_DEFAULT_ENTRY BIT NOT NULL DEFAULT 0,
|
||
COMMENT VARCHAR(1000),
|
||
ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'SYSTEM',
|
||
ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()),
|
||
CHANGED_WHO VARCHAR(30),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_LANGUAGE PRIMARY KEY (GUID),
|
||
CONSTRAINT UQ_TBDD_LANGUAGE UNIQUE (LANG_CODE)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_LANGUAGE_AFT_UPD ON TBDD_LANGUAGE
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_LANGUAGE SET CHANGED_WHEN = GETDATE()
|
||
FROM INSERTED
|
||
WHERE TBDD_LANGUAGE.GUID = INSERTED.GUID
|
||
GO
|
||
INSERT INTO TBDD_LANGUAGE (LANG_CODE,CREATE_DEFAULT_ENTRY) VALUES ('de-DE',1);
|
||
INSERT INTO TBDD_LANGUAGE (LANG_CODE,CREATE_DEFAULT_ENTRY) VALUES ('en-EN',1);
|
||
INSERT INTO TBDD_LANGUAGE (LANG_CODE,CREATE_DEFAULT_ENTRY) VALUES ('fr-FR',1);
|
||
GO
|
||
IF NOT EXISTS(SELECT 1 FROM sys.columns
|
||
WHERE Name = N'LANGUAGE_OVERRIDE'
|
||
AND Object_ID = Object_ID(N'dbo.TBDD_USER_MODULE_LOG_IN'))
|
||
BEGIN
|
||
-- Column Exists
|
||
ALTER TABLE TBDD_USER_MODULE_LOG_IN ADD LANGUAGE_OVERRIDE VARCHAR(5) NOT NULL DEFAULT ''
|
||
END
|
||
ELSE
|
||
PRINT 'COLUMN LANGUAGE_OVERRIDE EXISTS'
|
||
GO
|
||
IF NOT EXISTS(SELECT 1 FROM sys.columns
|
||
WHERE Name = N'LANGUAGE_OVERRIDE'
|
||
AND Object_ID = Object_ID(N'dbo.TBDD_USER_LOGIN_OUT'))
|
||
BEGIN
|
||
-- Column Exists
|
||
ALTER TABLE TBDD_USER_LOGIN_OUT ADD LANGUAGE_OVERRIDE VARCHAR(5) NOT NULL DEFAULT ''
|
||
END
|
||
ELSE
|
||
PRINT 'COLUMN LANGUAGE_OVERRIDE EXISTS'
|
||
GO
|
||
|
||
CREATE TABLE TBDD_USER_LOG_IN_ATTEMPT(
|
||
GUID BIGINT IDENTITY(1,1) NOT NULL,
|
||
USERNAME VARCHAR(100),
|
||
MODULE VARCHAR(30),
|
||
APP_STARTUP_PATH VARCHAR(1000),
|
||
VERSION_CLIENT VARCHAR(30),
|
||
MACHINE_NAME VARCHAR(250),
|
||
OVERRIDE_LANGUAGE VARCHAR(5),
|
||
[LOGIN] DATETIME DEFAULT (GETDATE()),
|
||
CONSTRAINT [PK_TBDD_USER_LOG_IN_ATTEMPT] PRIMARY KEY(GUID))
|
||
GO
|
||
CREATE TABLE TBDD_USER_CHANGE_LOG(
|
||
GUID BIGINT IDENTITY(1,1) NOT NULL,
|
||
USR_ID INTEGER NOT NULL,
|
||
COMMENT VARCHAR(3000),
|
||
CONSTRAINT [PK_TBDD_USER_CHANGE_LOG] PRIMARY KEY(GUID))
|
||
GO
|
||
|
||
CREATE TRIGGER [dbo].[TBDD_USER_AFT_UPD_LOG] ON [dbo].[TBDD_USER]
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN
|
||
DECLARE @USRNAME VARCHAR(50),@LANGUAGE VARCHAR(5),@CHANGED_WHO VARCHAR(100),@USR_ID INTEGER, @COMMENT VARCHAR(1000)
|
||
SELECT @USRNAME = USERNAME,@LANGUAGE = LANGUAGE,@CHANGED_WHO = CHANGED_WHO,@USR_ID = GUID FROM inserted
|
||
|
||
IF UPDATE (LANGUAGE) AND @CHANGED_WHO LIKE 'LANG_CHANGE_GUI%'
|
||
BEGIN
|
||
SET @COMMENT = 'USER CHANGED LANGUAGE TO [' + @LANGUAGE + ']'
|
||
INSERT INTO [dbo].[TBDD_USER_CHANGE_LOG]
|
||
([USR_ID],[COMMENT])
|
||
VALUES
|
||
(@USR_ID,@COMMENT)
|
||
END
|
||
END
|
||
GO
|
||
CREATE TABLE TBDD_CATALOG
|
||
(
|
||
GUID INTEGER NOT NULL IDENTITY (1, 1),
|
||
CAT_TITLE VARCHAR(100) NOT NULL,
|
||
CAT_STRING VARCHAR(900) NOT NULL,
|
||
ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'SYSTEM',
|
||
ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()),
|
||
CHANGED_WHO VARCHAR(30),
|
||
CHANGED_WHEN DATETIME,
|
||
CONSTRAINT PK_TBDD_CATALOG PRIMARY KEY (GUID),
|
||
CONSTRAINT UQ_TBDD_CATALOG_TITLE UNIQUE (CAT_TITLE)
|
||
)
|
||
GO
|
||
CREATE TRIGGER TBDD_CATALOG_USER_AFT_UPD ON TBDD_CATALOG
|
||
FOR UPDATE
|
||
AS
|
||
UPDATE TBDD_CATALOG SET CHANGED_WHEN = GETDATE()
|
||
FROM INSERTED
|
||
WHERE TBDD_CATALOG.GUID = INSERTED.GUID
|
||
GO
|
||
INSERT INTO [TBDD_CATALOG] (CAT_TITLE,CAT_STRING) VALUES ('DDSUPPORT_PORTAL','https://digitaldata.works/support/');
|
||
GO
|
||
CREATE VIEW [dbo].[VWDD_GROUPS_USER] AS
|
||
select
|
||
USR.GUID AS USR_ID
|
||
,USR.USERNAME,
|
||
GRP.GUID AS GRP_ID
|
||
,GRP.NAME AS GRP_NAME
|
||
,GU.ADDED_WHEN
|
||
,GU.ADDED_WHO
|
||
from
|
||
dd_ecm.dbo.TBDD_GROUPS GRP INNER JOIN TBDD_GROUPS_USER GU ON GRP.GUID = GU.GROUP_ID
|
||
INNER JOIN TBDD_USER USR ON GU.USER_ID = USR.GUID
|
||
WHERE
|
||
USR.ACTIVE = 1
|
||
GO |