From 9cbb9e48599525b584b3f91dd9105973c83f5eaf Mon Sep 17 00:00:00 2001 From: Developer01 Date: Wed, 29 Jan 2025 08:27:50 +0100 Subject: [PATCH] =?UTF-8?q?MS=20TaskFlow=20nach=20SWE=20Auff=C3=A4lligkeit?= =?UTF-8?q?en?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../02_TASKFLOW/Updates/2.4.1.0.sql | Bin 5388 -> 6100 bytes DEVELOP/Database_Migration.sql | 87 ++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 DEVELOP/Database_Migration.sql diff --git a/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.4.1.0.sql b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.4.1.0.sql index 5d9b599b3feaa4d14279397d42726a25ec6f31bb..a7cdfb497d1a8a18006fdf7149c6361882dff21a 100644 GIT binary patch delta 649 zcmd5&Jx>Br5L}SsJdQgKxEMmv;MW04kX-O18cjej76=hfG&Z2IG{(@`Sx|`uW?DNc zOJh&`5hQj*6Jx0q{s0%Wu(UC;*f;Zb_Py-P)l6ruc_XZlLaw{kqs=p5l%oP=`@QQ{ zW748DWhl?h3KgluLXOW0t@ABUyR=0GQluVkZB*m~}pY}v3 zLO&L`Z`ikOP?ZH_lpqci6PL`}$^^Pf3Z|-~=g=6ZV5uRTa#@1GW#G zMF_$4jG^Y#k#KG>_D~fK)Ws-tEr16x4oiE2>5bxTIDxu1j;s_#$7{mjGm-KoP-SfT z)^Ox1BkZ?O^BZ1?HrPy&BMA4?A_<4`DE4I)$MO=Zdu+2GR_ zp>veOX;{Z7EMXj`n6YP~f{w`WlQ)dQvk>UUWxNIgGvT6Fu#7-MY8*?$DD;^dS;muG z#ody^mu&L=#-M0%rmC0}HC|K#>wdynu41}UgNYJcu=k>rF&IYylvl%!m!j)!W8`&^ z_uDYq`b}z6iw>wVuZ~N99p`!zQ(xgtXK>;zG`Qg)(2J%eOoBDI;mMz^t1J6&>-g8P IgZnu71q6tervLx| diff --git a/DEVELOP/Database_Migration.sql b/DEVELOP/Database_Migration.sql new file mode 100644 index 0000000..5ea6653 --- /dev/null +++ b/DEVELOP/Database_Migration.sql @@ -0,0 +1,87 @@ +--DROP TABLE TBMigrationLog +CREATE TABLE TBMigrationLog +( + MigrationID INTEGER NOT NULL, + ScriptName VARCHAR(255) NOT NULL, + ExecutedWhen DATETIME NOT NULL, + ExecutedWho VARCHAR(50) NOT NULL, + ExecState VARCHAR(50), + ErrorMessage VARCHAR(500), + CONSTRAINT PK_TBMigrationLog PRIMARY KEY (MigrationID) +) +GO +--DROP TABLE TBMigrationScripts +CREATE TABLE TBMigrationScripts +( + MigrationID INTEGER IDENTITY(1,1), + ScriptName VARCHAR(255) NOT NULL, + ScriptDescription VARCHAR(255), + ScriptPath_Command NVARCHAR(MAX), + IsActive BIT NOT NULL DEFAULT 0, + AddedWhen DATETIME NOT NULL DEFAULT GETDATE() + CONSTRAINT PK_TBMigrationScripts PRIMARY KEY (MigrationID) +) +GO + +INSERT INTO TBMigrationScripts (ScriptName, ScriptDescription, ScriptPath_Command, IsActive) +VALUES ('007', 'FILE', 'E:\TreeSizeFree\1.9.8.1.sql', 1); + +--CREATE PROCEDURE ExecuteMigrations +--AS +BEGIN + DECLARE @MigrationID INT, @ScriptName VARCHAR(255), @ScriptPath_Command NVARCHAR(MAX), @SQL NVARCHAR(MAX),@ScriptDescription VARCHAR(20); + + DECLARE MigrationCursor CURSOR FOR + SELECT MS.MigrationID, MS.ScriptName, ScriptPath_Command,MS.ScriptDescription + FROM TBMigrationScripts MS + LEFT JOIN TBMigrationLog ML ON MS.MigrationID = ML.MigrationID + WHERE ML.MigrationID IS NULL AND MS.IsActive = 1 + ORDER BY MS.MigrationID; + OPEN MigrationCursor; + FETCH NEXT FROM MigrationCursor INTO @MigrationID, @ScriptName, @ScriptPath_Command,@ScriptDescription; + + WHILE @@FETCH_STATUS = 0 + BEGIN + BEGIN TRY + -- Lies das SQL-Skript aus der Datei + IF @ScriptDescription = 'FILE' + BEGIN + DECLARE @DynamicSQL NVARCHAR(500), @FileContent NVARCHAR(MAX); + SET @DynamicSQL = 'SELECT @FileContentOut = BulkColumn + FROM OPENROWSET(BULK ''' + @ScriptPath_Command + ''', SINGLE_CLOB) AS FileContent'; + + EXEC sp_executesql @DynamicSQL, N'@FileContentOut NVARCHAR(MAX) OUTPUT', @FileContent OUTPUT; + SET @SQL = @FileContent; + PRINT '==============================' + PRINT @SQL + PRINT '==============================' + END + ELSE + SET @SQL = @ScriptPath_Command; + + -- Führe das Skript aus + PRINT 'EXECUTING - MIGRATION SKRIPT [' + @ScriptName + '] ...' + EXEC sp_executesql @SQL; + PRINT '########################################' + PRINT 'EXECUTION SUCCESSFUL!' + PRINT '########################################' + + -- Erfolgreiche Migration protokollieren + INSERT INTO TBMigrationLog (MigrationID, ScriptName, ExecutedWhen, ExecutedWho, ExecState) + VALUES (@MigrationID, @ScriptName, GETDATE(), SYSTEM_USER, 'Success'); + END TRY + BEGIN CATCH + DECLARE @ERR VARCHAR(1500) = ERROR_MESSAGE(); + PRINT @ERR + -- Fehler protokollieren + INSERT INTO TBMigrationLog (MigrationID, ScriptName, ExecutedWhen, ExecutedWho, ExecState, ErrorMessage) + VALUES (@MigrationID, @ScriptName, GETDATE(), 'XXXX', 'Failed', @ERR); + BREAK; + END CATCH; + PRINT '' + FETCH NEXT FROM MigrationCursor INTO @MigrationID, @ScriptName, @ScriptPath_Command,@ScriptDescription; + END; + + CLOSE MigrationCursor; + DEALLOCATE MigrationCursor; +END; \ No newline at end of file