Maintain and add new SQL Procedures
This commit is contained in:
parent
6b3d9e010f
commit
97aa6cf5f8
146
current/[FNDD_CONVERT_RTF2TEXT]/[FNDD_CONVERT_RTF2TEXT].sql
Normal file
146
current/[FNDD_CONVERT_RTF2TEXT]/[FNDD_CONVERT_RTF2TEXT].sql
Normal file
@ -0,0 +1,146 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [FNDD_CONVERT_RTF2Text]
|
||||
-- =================================================================
|
||||
-- Converts a RTF text to a regular text
|
||||
--
|
||||
-- Returns: NVARCHAR - text
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2024 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 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;
|
||||
@ -0,0 +1,36 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
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 • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • 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
|
||||
@ -0,0 +1,332 @@
|
||||
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 • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • 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;
|
||||
@ -1,48 +1,530 @@
|
||||
DECLARE @name VARCHAR(50) -- database name
|
||||
DECLARE @path VARCHAR(256) -- path for backup files
|
||||
DECLARE @fileName VARCHAR(256) -- filename for backup
|
||||
DECLARE @fileDate VARCHAR(20) -- used for file name
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
---- To run the file export in this procedure, it is n to reconfigure the sql server
|
||||
--sp_configure 'show advanced options', 1;
|
||||
--GO
|
||||
--RECONFIGURE WITH OVERRIDE;
|
||||
--GO
|
||||
--sp_configure 'Ole Automation Procedures', 1;
|
||||
--GO
|
||||
--RECONFIGURE WITH OVERRIDE;
|
||||
--GO
|
||||
--EXEC sp_configure 'xp_cmdshell', 1
|
||||
--GO
|
||||
--RECONFIGURE WITH OVERRIDE
|
||||
--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 • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • 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
|
||||
|
||||
-- specify database backup directory
|
||||
SET @path = 'F:\Sicherung'
|
||||
|
||||
-- specify filename format
|
||||
SELECT @path = @path + '\' + CONVERT(VARCHAR(20),GETDATE(),112) + '\'
|
||||
EXECUTE master.dbo.xp_create_subdir @path
|
||||
|
||||
DECLARE db_cursor CURSOR READ_ONLY FOR
|
||||
SELECT name
|
||||
FROM master.sys.databases
|
||||
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
|
||||
AND state = 0 -- database is online
|
||||
AND is_in_standby = 0 -- database is not read only for log shipping
|
||||
|
||||
OPEN db_cursor
|
||||
FETCH NEXT FROM db_cursor INTO @name
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
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 @fileName = @path + @name + '.BAK'
|
||||
|
||||
BACKUP DATABASE @name TO DISK = @fileName
|
||||
WITH FORMAT, COMPRESSION, CHECKSUM;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
FETCH NEXT FROM db_cursor INTO @name
|
||||
END
|
||||
-- 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')));
|
||||
|
||||
CLOSE db_cursor
|
||||
DEALLOCATE db_cursor
|
||||
-- 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;
|
||||
|
||||
@ -0,0 +1,207 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [PRDD_ENABLE_MEMORY_OPTIMIZED_SUPPORT]
|
||||
-- =================================================================
|
||||
-- Enable memory optimization to a specific database
|
||||
-- Minimum requirement: MS SQL Server 2014
|
||||
--
|
||||
-- Returns: INT Value - 0 = Everything worked well
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 05.03.2025 / MK
|
||||
-- Version Date / Editor: 05.03.2025 / MK
|
||||
-- Version Number: 1.0.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 05.03.2025 / MK - First Version
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PRDD_ENABLE_MEMORY_OPTIMIZED_SUPPORT] (
|
||||
@pDATABASE_NAME SYSNAME = 'DD_ECM', -- Give the db name on which the memory optimized feature should be enabled. Default and Failsafe is "DD_ECM".
|
||||
@pELEVATE_TO_SNAPSHOT NVARCHAR(3) = 'ON' -- Set 'ON' or 'OFF'. See help text at the end of the file. Default is 'ON', Failsafe is 'unset'.
|
||||
)
|
||||
AS
|
||||
BEGIN TRY
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- declare new vars because of parameter sniffing
|
||||
DECLARE @DATABASE_NAME SYSNAME = ISNULL(@pDATABASE_NAME,'DD_ECM'),
|
||||
@ELEVATE_TO_SNAPSHOT NVARCHAR(3) = ISNULL(@pELEVATE_TO_SNAPSHOT,'unset');
|
||||
|
||||
-- declare runtime vars
|
||||
DECLARE @MyProcedureName NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||
DECLARE @IsSysAdmin TINYINT = 0,
|
||||
@CompatibilityLevel SMALLINT = 0,
|
||||
@Counter TINYINT = 0,
|
||||
@MemoryOptimizedFileGroupName SYSNAME = CONCAT(@DATABASE_NAME,'_MOFG'),
|
||||
@MemoryOptimizedFileName SYSNAME = CONCAT(@DATABASE_NAME,'_MOF'),
|
||||
@MemoryOptimizedFilePath NVARCHAR(255) = NULL,
|
||||
@SQLCommand NVARCHAR(500) = NULL,
|
||||
@return_status NVARCHAR(50) = 0,
|
||||
@return_status_text NVARCHAR(MAX) = 'START ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120),
|
||||
@return_error_text NVARCHAR(MAX) = NULL;
|
||||
|
||||
PRINT '==============================='
|
||||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||||
PRINT 'PARAMETER01 - @DATABASE_NAME: ' + CONVERT(NVARCHAR(200),@DATABASE_NAME);
|
||||
PRINT 'PARAMETER02 - @ELEVATE_TO_SNAPSHOT: ' + CONVERT(NVARCHAR(200),@ELEVATE_TO_SNAPSHOT);
|
||||
|
||||
-- Check if the current user is a sysadmin
|
||||
SET @IsSysAdmin = IS_SRVROLEMEMBER('sysadmin');
|
||||
|
||||
IF (@IsSysAdmin = 1) BEGIN
|
||||
|
||||
--===================================================-- Check requirements --====================================================--
|
||||
|
||||
-- Check the database compatibility level
|
||||
SET @CompatibilityLevel = (SELECT [compatibility_level] FROM [sys].[databases] WHERE [name] = @DATABASE_NAME);
|
||||
|
||||
PRINT char(10) + 'The database compatibility level must be 120 (SQL Server 2014) or higher to use MEMORY_OPTIMIZED_DATA filegroup.';
|
||||
PRINT 'The current level of the [' + @DATABASE_NAME + '] database is: ' + convert(varchar,@CompatibilityLevel);
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Verify if compatibility level is 120 (SQL Server 2014) or higher
|
||||
IF (@CompatibilityLevel >= 120) BEGIN
|
||||
|
||||
--======================================================-- Add filegroup --======================================================--
|
||||
-- Check if MEMORY_OPTIMIZED_DATA filegroup already exists
|
||||
SET @Counter = (SELECT COUNT(*)
|
||||
FROM [sys].[filegroups]
|
||||
WHERE [name] = @MemoryOptimizedFileGroupName);
|
||||
|
||||
IF (@Counter = 0) BEGIN
|
||||
|
||||
-- Add MEMORY_OPTIMIZED_DATA filegroup to the database
|
||||
SET @SQLCommand = 'ALTER DATABASE [' + @DATABASE_NAME + '] ADD FILEGROUP [' + @MemoryOptimizedFileGroupName + '] CONTAINS MEMORY_OPTIMIZED_DATA;';
|
||||
PRINT char(10) + 'Executing @SQLCommand for filegroup creation: ' + char(13) + @SQLCommand;
|
||||
|
||||
BEGIN TRY
|
||||
EXEC(@SQLCommand);
|
||||
PRINT 'Filegroup ' + @MemoryOptimizedFileGroupName + ' created successfully!';
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
PRINT 'Filegroup cannot be created!';
|
||||
RETURN;
|
||||
END CATCH
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT char(10) + 'Filegroup ' + @MemoryOptimizedFileGroupName + ' already exists!';
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Determ current storage path of the mdf file, and use this path as default location for the memory optimized file
|
||||
SET @MemoryOptimizedFilePath = (SELECT DISTINCT concat(LEFT(physical_name, LEN(physical_name) - CHARINDEX('\', REVERSE(physical_name)) + 1),@MemoryOptimizedFileName) AS 'File Location'
|
||||
FROM [sys].[master_files]
|
||||
WHERE [database_id] = DB_ID(@DATABASE_NAME) and [type_desc] = 'ROWS');
|
||||
|
||||
--==================================================-- Add file to filegroup --==================================================--
|
||||
-- Check if the file already exists
|
||||
SET @Counter = (SELECT COUNT(*)
|
||||
FROM [sys].[master_files]
|
||||
WHERE [name] = @MemoryOptimizedFileName
|
||||
AND [physical_name] = @MemoryOptimizedFilePath);
|
||||
|
||||
IF (@Counter = 0) BEGIN
|
||||
|
||||
-- Add file to the MEMORY_OPTIMIZED_DATA filegroup
|
||||
SET @SQLCommand = 'ALTER DATABASE [' + @DATABASE_NAME + '] ADD FILE ( NAME = [' + @MemoryOptimizedFileName + '],
|
||||
FILENAME = N''' + @MemoryOptimizedFilePath + ''')
|
||||
TO FILEGROUP [' + @MemoryOptimizedFileGroupName + '] ';
|
||||
PRINT char(10) + 'Executing @SQLCommand for file creation: ' + char(13) + @SQLCommand;
|
||||
|
||||
BEGIN TRY
|
||||
EXEC(@SQLCommand);
|
||||
PRINT 'File ' + @MemoryOptimizedFileName + ' created successfully!';
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
PRINT 'File cannot be created!';
|
||||
RETURN;
|
||||
END CATCH
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT char(10) + 'File ' + @MemoryOptimizedFileName + ' already exists!';
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===================================================-- Change working mode --===================================================--
|
||||
IF (@ELEVATE_TO_SNAPSHOT in ('ON','OFF')) BEGIN
|
||||
SET @SQLCommand = 'ALTER DATABASE [' + @DATABASE_NAME + '] SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT ' + @ELEVATE_TO_SNAPSHOT + ';';
|
||||
PRINT char(10) + 'Executing @SQLCommand to change working mode: ' + char(13) + @SQLCommand;
|
||||
|
||||
BEGIN TRY
|
||||
EXEC(@SQLCommand);
|
||||
PRINT 'Working mode "MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT" has been set to ' + @ELEVATE_TO_SNAPSHOT + '!';
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
PRINT 'Working mode "MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT" cannot be set to ' + @ELEVATE_TO_SNAPSHOT + '!';
|
||||
RETURN;
|
||||
END CATCH
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT char(10) + 'Working mode "MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT" keeps untouched!';
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Cannot proceed!' + char(10) + 'Compatibility level does not fit!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Cannot proceed!' + char(10) + 'The current user must be a member of the sysadmin fixed server role to execute this script!';
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
SET @return_status = 0;
|
||||
SET @return_status_text = 'END ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||||
|
||||
PRINT '';
|
||||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||||
PRINT '===============================';
|
||||
|
||||
END TRY
|
||||
|
||||
BEGIN CATCH
|
||||
|
||||
--======================================================-- Output result --======================================================--
|
||||
SET @return_status = 1;
|
||||
SET @return_status_text = 'END ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||||
SET @return_error_text = 'ERROR MESSAGE: ' + CONVERT(VARCHAR(500),ERROR_MESSAGE());
|
||||
|
||||
PRINT '';
|
||||
PRINT 'ERROR IN PROCEDURE: ' + @MyProcedureName;
|
||||
PRINT @return_error_text;
|
||||
|
||||
PRINT '';
|
||||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||||
PRINT '===============================';
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
RETURN @return_status;
|
||||
|
||||
END CATCH
|
||||
GO
|
||||
|
||||
-- German help text for "@pELEVATE_TO_SNAPSHOT":
|
||||
-- Der Befehl ALTER DATABASE SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT ON wird in SQL Server verwendet, um die Funktion Memory-Optimized Elevate to Snapshot Isolation zu aktivieren. Dies bedeutet, dass Transaktionen, die speicheroptimierte Tabellen verwenden, standardmäßig das Snapshot-Isolationslevel nutzen, selbst wenn sie ohne explizite Angabe eines Isolationslevels gestartet werden.
|
||||
-- Das Isolationslevel "Snapshot" ermöglicht es, Daten zu lesen, ohne dabei Schreibvorgänge von anderen Transaktionen zu blockieren, und es sorgt dafür, dass jede Transaktion eine konsistente Ansicht der Daten zum Zeitpunkt ihres Beginns erhält.
|
||||
|
||||
-- Vorteile:
|
||||
-- Automatische Snapshot-Isolation: Transaktionen, die speicheroptimierte Tabellen verwenden, profitieren direkt von der Snapshot-Isolation, ohne dass dies explizit festgelegt werden muss. Das kann Fehler vermeiden und den Entwicklungsprozess vereinfachen.
|
||||
-- Konsistente Datenansicht: Die Snapshot-Isolation ermöglicht es, Daten zu lesen, ohne andere Schreibvorgänge zu blockieren. Das verbessert die Parallelität und reduziert Deadlocks.
|
||||
-- Geeignet für leselastige Anwendungen: Anwendungen, die viele Lesevorgänge durchführen und keine strengen Anforderungen an die Konsistenz von Schreibvorgängen stellen, können hiervon profitieren.
|
||||
|
||||
-- Nachteile:
|
||||
-- Speicherverbrauch: Da die Snapshot-Isolation auf Versionierung basiert, kann es zu einem höheren Speicherverbrauch kommen, vor allem bei vielen parallelen Transaktionen oder großen Datenmengen.
|
||||
-- Komplexität bei Schreiblasten: Bei stark schreibintensiven Anwendungen kann die Snapshot-Isolation möglicherweise zu Konflikten führen, da Änderungen zu einem Konfliktfehler führen, wenn zwei Transaktionen denselben Datensatz gleichzeitig ändern.
|
||||
-- Eventuelle Performanceeinbußen: In bestimmten Szenarien könnten zusätzliche Abfragen zur Versionierung die Performance leicht beeinträchtigen.
|
||||
|
||||
-- Empfehlung:
|
||||
-- Für leselastige, speicheroptimierte Anwendungen kann dies eine gute Option sein.
|
||||
-- Wenn deine Anwendung stark schreibintensiv ist oder spezifische Isolationseinstellungen erfordert, solltest du die Auswirkungen dieser Einstellung genauer testen.
|
||||
@ -1,3 +1,8 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [PRDD_MAINTAIN_DATABASES]
|
||||
-- =================================================================
|
||||
-- Checks database health, shrinks all database and log files
|
||||
@ -12,17 +17,13 @@
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 29.11.2024 / MK
|
||||
-- Version Date / Editor: 06.12.2024 / MK
|
||||
-- Version Number: 1.1.0.0
|
||||
-- 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
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
-- 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.
|
||||
@ -43,19 +44,19 @@ BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- declare new vars because of parameter sniffing
|
||||
DECLARE @CHECKDB BIT = @pCHECKDB,
|
||||
@SHRINKLOG BIT = @pSHRINKLOG,
|
||||
@SHRINKDB BIT = @pSHRINKDB,
|
||||
@REBUILDINDEX BIT = @pREBUILDINDEX,
|
||||
@RECOMPILEPROCEDURES BIT = @pRECOMPILEPROCEDURES,
|
||||
@CLEARQUERYCACHE BIT = @pCLEARQUERYCACHE,
|
||||
@FORCE BIT = @pFORCE,
|
||||
@INCLUDEDB NVARCHAR(1000) = @pINCLUDEDB,
|
||||
@EXCLUDEDB NVARCHAR(1000) = @pEXCLUDEDB,
|
||||
@LOGLEVEL NVARCHAR(25) = @pLOGLEVEL;
|
||||
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(50) = 'PRDD_MAINTAIN_DATABASES';
|
||||
DECLARE @MyProcedureName NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||
DECLARE @ProcedureName NVARCHAR(50),
|
||||
@DBName NVARCHAR(100),
|
||||
@DBNameCount INT,
|
||||
@ -1105,8 +1106,20 @@ BEGIN
|
||||
DEALLOCATE db_cursor;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT '';
|
||||
PRINT 'So there is nothing to do...';
|
||||
|
||||
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;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -0,0 +1,284 @@
|
||||
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 • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • 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
|
||||
Loading…
x
Reference in New Issue
Block a user