diff --git a/current/[DD_SYS]-Database/[PRDD_BACKUP_DATABASES]/[PRDD_BACKUP_DATABASES].sql b/current/[DD_SYS]-Database/[PRDD_BACKUP_DATABASE]/[PRDD_BACKUP_DATABASE].sql similarity index 55% rename from current/[DD_SYS]-Database/[PRDD_BACKUP_DATABASES]/[PRDD_BACKUP_DATABASES].sql rename to current/[DD_SYS]-Database/[PRDD_BACKUP_DATABASE]/[PRDD_BACKUP_DATABASE].sql index 5725b55..82a6b2f 100644 --- a/current/[DD_SYS]-Database/[PRDD_BACKUP_DATABASES]/[PRDD_BACKUP_DATABASES].sql +++ b/current/[DD_SYS]-Database/[PRDD_BACKUP_DATABASE]/[PRDD_BACKUP_DATABASE].sql @@ -6,7 +6,7 @@ GO SET QUOTED_IDENTIFIER ON GO --- [PRDD_BACKUP_DATABASES] +-- [PRDD_BACKUP_DATABASE] -- ================================================================= -- Saving database to LOCAL (!!) backup folder -- Minimum requirement: MS SQL Server 2016 @@ -19,15 +19,16 @@ GO -- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works -- ================================================================= -- Creation Date / Author: 13.12.2024 / MK --- Version Date / Editor: 30.05.2025 / MK --- Version Number: 1.2.0.1 +-- Version Date / Editor: 23.12.2025 / MK +-- Version Number: 1.3.0.0 -- ================================================================= -- History: -- 13.12.2024 / MK - First Version -- 28.05.2025 / MP - Missing variables declared -- 30.05.2025 / MK - Minor corrections +-- 23.12.2025 / MK - Code optimizations, for less query overhead -CREATE OR ALTER PROCEDURE [dbo].[PRDD_BACKUP_DATABASES] ( +CREATE OR ALTER PROCEDURE [dbo].[PRDD_BACKUP_DATABASE] ( @pCOMPRESSION BIT = 0, -- Set to 1 to compress the database backup file (This option is not available in SQL Express Versions!). Otherwise set to 0. @pSHRINKLOG BIT = 1, -- Set to 1 to shrink the log file after backup. Otherwise set to 0. @pLOCALBACKUPPATH NVARCHAR(200) = 'F:\Sicherung', -- Set the LOCAL Backup path. If path doesnt exist, it will be created. @@ -35,7 +36,7 @@ CREATE OR ALTER PROCEDURE [dbo].[PRDD_BACKUP_DATABASES] ( @pFORCE BIT = 0, -- Set to 1 to force the shrinking, it will cut all current sessens. In combination with @pCHECKDB it trys the soft reapair dbs. Otherwise set to 0. @pINCLUDEDB NVARCHAR(1000) = 'DD_ECM', -- Set a list of included databases. IF <> NULL, it will override the @pEXCLUDEDB Parameter. @pEXCLUDEDB NVARCHAR(1000) = 'master,model,msdb,tempdb', -- Set a list of exluded databases. Default exclusen are the system databases. - @pLOGLEVEL NVARCHAR(25) = 'ERROR' -- Set to 'INFO','WARN' OR 'ERROR' (or NULL to disable), logging to table: [TBDD_BACKUP_DATABASES_LOG]. + @pLOGLEVEL NVARCHAR(25) = 'ERROR' -- Set to 'INFO','WARN' OR 'ERROR' (or NULL to disable), logging to table: [TBDD_BACKUP_DATABASE_LOG]. -- 'INFO' includes Infos, Warnings and Errors, 'WARN' only warnings and Errors and 'ERROR' only Errors. ) AS @@ -74,19 +75,22 @@ BEGIN @SQLCommand NVARCHAR(1000) = NULL, @CMDCommand NVARCHAR(1000) = NULL, @CMDCommandResult INT = 0, - @return_status NVARCHAR(50) = 0, - @return_status_text NVARCHAR(MAX) = 'START ' + @MyProcedureName + ' @ ' + CONVERT(NVARCHAR(50),GETDATE(),120); + @return_status INT = 0, + @return_status_text NVARCHAR(MAX) = 'START PROCEDURE [' + @MyProcedureName + '] @ ' + CONVERT(NVARCHAR(50),GETDATE(),120); - PRINT '===============================' - PRINT 'PROCEDURE - ' + @return_status_text; - PRINT 'PARAMETER01 - @COMPRESSION: ' + CONVERT(NVARCHAR(1),@COMPRESSION); - PRINT 'PARAMETER02 - @SHRINKLOG: ' + CONVERT(NVARCHAR(1),@SHRINKLOG); - PRINT 'PARAMETER03 - @LOCALBACKUPPATH: ' + CONVERT(NVARCHAR(50),@LOCALBACKUPPATH); - PRINT 'PARAMETER04 - @SUBDIRECTORY: ' + CONVERT(NVARCHAR(1),@SUBDIRECTORY); - PRINT 'PARAMETER05 - @FORCE: ' + CONVERT(NVARCHAR(1),@FORCE); - PRINT 'PARAMETER06 - @INCLUDEDB: ' + CONVERT(NVARCHAR(1000),@INCLUDEDB); - PRINT 'PARAMETER07 - @EXCLUDEDB: ' + CONVERT(NVARCHAR(1000),@EXCLUDEDB); - PRINT 'PARAMETER08 - @LOGLEVEL: ' + CONVERT(NVARCHAR(25),@LOGLEVEL); + --=================================================-- Output parameters --================================================-- + PRINT '===================================================================================================='; + PRINT @return_status_text; + PRINT ''; + PRINT 'PARAMETER01 - @COMPRESSION: ' + CONVERT(NVARCHAR(1),@COMPRESSION); + PRINT 'PARAMETER02 - @SHRINKLOG: ' + CONVERT(NVARCHAR(1),@SHRINKLOG); + PRINT 'PARAMETER03 - @LOCALBACKUPPATH: ' + CONVERT(NVARCHAR(50),@LOCALBACKUPPATH); + PRINT 'PARAMETER04 - @SUBDIRECTORY: ' + CONVERT(NVARCHAR(1),@SUBDIRECTORY); + PRINT 'PARAMETER05 - @FORCE: ' + CONVERT(NVARCHAR(1),@FORCE); + PRINT 'PARAMETER06 - @INCLUDEDB: ' + CONVERT(NVARCHAR(1000),@INCLUDEDB); + PRINT 'PARAMETER07 - @EXCLUDEDB: ' + CONVERT(NVARCHAR(1000),@EXCLUDEDB); + PRINT 'PARAMETER08 - @LOGLEVEL: ' + CONVERT(NVARCHAR(25),@LOGLEVEL); + PRINT ''; --=================================================-- Get server infos --==================================================-- SELECT @ProductVersion = SERVERPROPERTY('productversion'), @ProductLevel = SERVERPROPERTY ('productlevel'), @ProductEdition = SERVERPROPERTY ('edition'); @@ -104,31 +108,30 @@ BEGIN --==============================================-- 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 + IF EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'TBDD_BACKUP_DATABASE_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 + CREATE TABLE [dbo].[TBDD_BACKUP_DATABASE_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_BACKUP_DATABASE_LOG_GUID] PRIMARY KEY CLUSTERED ( [GUID] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, DATA_COMPRESSION = PAGE) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]; - ALTER TABLE [dbo].[TBDD_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]; + ALTER TABLE [dbo].[TBDD_BACKUP_DATABASE_LOG] ADD CONSTRAINT [DF_TBDD_BACKUP_DATABASE_LOG_ADDED_WHO] DEFAULT (SUSER_SNAME()) FOR [ADDED_WHO]; + ALTER TABLE [dbo].[TBDD_BACKUP_DATABASE_LOG] ADD CONSTRAINT [DF_TBDD_BACKUP_DATABASE_LOG_ADDED_WHEN] DEFAULT (SYSDATETIME()) FOR [ADDED_WHEN]; END; END; ELSE BEGIN @@ -137,12 +140,19 @@ BEGIN END; ----------------------------------------------------------------------------------------------------------------------------- + + --===============================================-- Check for log table --================================================-- + IF NOT EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'TBDD_BACKUP_DATABASE_LOG') BEGIN + SET @LOGLEVEL = 'NONE'; + PRINT 'ERROR: Because the log table [TBDD_BACKUP_DATABASE_LOG] does not exists, logging is disabled for this run!'; + END; + ----------------------------------------------------------------------------------------------------------------------------- + + --===============================================-- Log start to table --=================================================-- IF ((@LOGLEVEL in ('INFO')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN - 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL,'preparing', 'procedure', @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -158,10 +168,8 @@ BEGIN --===================================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL,'preparing', 'procedure', @return_status, 'Found SQL Edition: ' + @ProductEditionSimpleString, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -207,10 +215,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_list', 'count', @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -264,10 +270,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_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; ----------------------------------------------------------------------------------------------------------------------------- @@ -305,10 +309,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -334,10 +336,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -349,10 +349,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -364,10 +362,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @SQLCommand, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -387,165 +383,141 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- + --============================================-- Prepare shrinking the log--===============================================-- + IF (@SHRINKLOG = 1) BEGIN + --===========================================-- Get infos about the log file --============================================-- + PRINT 'Get the current and minimum size of the log file in MB.'; + SET @SQLCommand = N'SELECT TOP 1 @LogFileName = [name], @CurrentLogFileSizeInMB = ([size] / 128), @MinimumLogFileSizeInMB = ([growth] / 128), @MaximumLogFileSizeInMB = ([max_size] / 128) + FROM [master].[sys].[master_files] (NOLOCK) + WHERE [database_id] = DB_ID(''' + @DBName + ''') AND [STATE_DESC] = ''ONLINE'' AND [type_desc] = ''LOG'''; + EXEC @return_status = sp_executesql @SQLCommand, N'@LogFileName VARCHAR(100) OUTPUT, @CurrentLogFileSizeInMB INT OUTPUT, @MinimumLogFileSizeInMB INT OUTPUT, @MaximumLogFileSizeInMB INT OUTPUT', + @LogFileName OUTPUT, @CurrentLogFileSizeInMB OUTPUT, @MinimumLogFileSizeInMB OUTPUT, @MaximumLogFileSizeInMB OUTPUT; + IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN + SET @return_status_text = 'Getting log file settings was successfully completed!'; + PRINT @return_status_text; + END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN + SET @return_status_text = 'Getting log file settings returns warnings or has failed, check the ID!'; + PRINT @return_status_text; + END; + ----------------------------------------------------------------------------------------------------------------------------- + --===============================================-- Log result to table --=================================================-- + IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN + INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); + END; + ----------------------------------------------------------------------------------------------------------------------------- - --============================================-- Prepare shrinking the log--===============================================-- - IF (@SHRINKLOG = 1) BEGIN + --===========================================-- Calculate target file size --==============================================-- + PRINT 'The @CurrentLogFileSizeInMB is: ' + CONVERT(NVARCHAR(1000),@CurrentLogFileSizeInMB); + PRINT 'The @MinimumLogFileSizeInMB is: ' + CONVERT(NVARCHAR(1000),@MinimumLogFileSizeInMB); + PRINT 'The @MaximumLogFileSizeInMB is: ' + CONVERT(NVARCHAR(1000),@MaximumLogFileSizeInMB); - --===========================================-- Get infos about the log file --============================================-- - PRINT 'Get the current and minimum size of the log file in MB.'; - SET @SQLCommand = N'SELECT TOP 1 @LogFileName = [name], @CurrentLogFileSizeInMB = ([size] / 128), @MinimumLogFileSizeInMB = ([growth] / 128), @MaximumLogFileSizeInMB = ([max_size] / 128) - FROM [master].[sys].[master_files] (NOLOCK) - WHERE [database_id] = DB_ID(''' + @DBName + ''') AND [STATE_DESC] = ''ONLINE'' AND [type_desc] = ''LOG'''; - EXEC @return_status = sp_executesql @SQLCommand, N'@LogFileName VARCHAR(100) OUTPUT, @CurrentLogFileSizeInMB INT OUTPUT, @MinimumLogFileSizeInMB INT OUTPUT, @MaximumLogFileSizeInMB INT OUTPUT', - @LogFileName OUTPUT, @CurrentLogFileSizeInMB OUTPUT, @MinimumLogFileSizeInMB OUTPUT, @MaximumLogFileSizeInMB OUTPUT; + SET @TargetLogFileSizeInMB = CASE WHEN (@MinimumLogFileSizeInMB < @CurrentLogFileSizeInMB) AND (@MinimumLogFileSizeInMB < @MaximumLogFileSizeInMB) + THEN @MinimumLogFileSizeInMB + ELSE @CurrentLogFileSizeInMB + END; - IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN - SET @return_status_text = 'Getting log file settings was successfully completed!'; - PRINT @return_status_text; - END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN - SET @return_status_text = 'Getting log file settings returns warnings or has failed, check the ID!'; - PRINT @return_status_text; - END; - ----------------------------------------------------------------------------------------------------------------------------- + PRINT 'The @TargetLogFileSizeInMB is: ' + CONVERT(NVARCHAR(1000),@TargetLogFileSizeInMB); + ----------------------------------------------------------------------------------------------------------------------------- - --===============================================-- Log result to table --=================================================-- - IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN - IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN - INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) - VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); - END; - END; - ----------------------------------------------------------------------------------------------------------------------------- + --=================================================-- Schrink db logs --===================================================-- + IF (@CurrentLogFileSizeInMB > @TargetLogFileSizeInMB) BEGIN - --===========================================-- Calculate target file size --==============================================-- - PRINT 'The @CurrentLogFileSizeInMB is: ' + CONVERT(NVARCHAR(1000),@CurrentLogFileSizeInMB); - PRINT 'The @MinimumLogFileSizeInMB is: ' + CONVERT(NVARCHAR(1000),@MinimumLogFileSizeInMB); - PRINT 'The @MaximumLogFileSizeInMB is: ' + CONVERT(NVARCHAR(1000),@MaximumLogFileSizeInMB); + --=============================================-- Change db recovery mode --===============================================-- + PRINT 'Truncating the log needs to change the database recovery model to SIMPLE.'; + SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET RECOVERY SIMPLE'; + EXEC @return_status = sp_executesql @SQLCommand; - SET @TargetLogFileSizeInMB = CASE WHEN (@MinimumLogFileSizeInMB < @CurrentLogFileSizeInMB) AND (@MinimumLogFileSizeInMB < @MaximumLogFileSizeInMB) - THEN @MinimumLogFileSizeInMB - ELSE @CurrentLogFileSizeInMB + IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN + SET @return_status_text = 'Setting database to the simple recovery model was successfully completed!'; + PRINT @return_status_text; + END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN + SET @return_status_text = 'Setting database to the simple recovery model returns warnings or has failed, check the ID!'; + PRINT @return_status_text; + END; + ----------------------------------------------------------------------------------------------------------------------------- + + --===============================================-- Log result to table --=================================================-- + IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN + INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); + END; + ----------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Now, do it! --=====================================================-- + IF (@return_status = 0) BEGIN + PRINT 'Shrink the truncated log file to 10% of its current size or the minimum size, whichever is larger.'; + IF (@ProductMainVersion >= 16) BEGIN + IF (@FORCE = 1) BEGIN + SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeInMB AS VARCHAR) + ') WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT = BLOCKERS), NO_INFOMSGS;'; + END; ELSE BEGIN + SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeInMB AS VARCHAR) + ') WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT = SELF), NO_INFOMSGS;'; END; + END; ELSE BEGIN + PRINT 'Because of the sql server version, DBCC SHRINKFILE is not applicable with the FORCE parameter!'; + SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeInMB AS VARCHAR) + ') WITH NO_INFOMSGS;'; + END; - PRINT 'The @TargetLogFileSizeInMB is: ' + CONVERT(NVARCHAR(1000),@TargetLogFileSizeInMB); - ----------------------------------------------------------------------------------------------------------------------------- + EXEC @return_status = sp_executesql @SQLCommand; - --=================================================-- Schrink db logs --===================================================-- - IF (@CurrentLogFileSizeInMB > @TargetLogFileSizeInMB) BEGIN + IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN + SET @return_status_text = 'Shrinking the database log file was successfully completed!'; + PRINT @return_status_text; + END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN + SET @return_status_text = 'Shrinking the database log file returns warnings or has failed, check the ID!'; + PRINT @return_status_text; + END; - --=============================================-- Change db recovery mode --===============================================-- - PRINT 'Truncating the log needs to change the database recovery model to SIMPLE.'; - SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET RECOVERY SIMPLE'; - EXEC @return_status = sp_executesql @SQLCommand; + END; ELSE BEGIN + SET @return_status_text = 'Shrinking the database log was skipped because of previouse error(s)!'; + END; + ----------------------------------------------------------------------------------------------------------------------------- - IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN - SET @return_status_text = 'Setting database to the simple recovery model was successfully completed!'; - PRINT @return_status_text; - END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN - SET @return_status_text = 'Setting database to the simple recovery model returns warnings or has failed, check the ID!'; - PRINT @return_status_text; - END; - ----------------------------------------------------------------------------------------------------------------------------- + --===============================================-- Log result to table --=================================================-- + IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN + INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); + END; + ----------------------------------------------------------------------------------------------------------------------------- - --===============================================-- Log result to table --=================================================-- - IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN - IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN - INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) - VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); - END; - END; - ----------------------------------------------------------------------------------------------------------------------------- + --=============================================-- Change db recovery mode --===============================================-- + PRINT 'Reset the database recovery model.' + SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET RECOVERY FULL'; + EXEC @return_status = sp_executesql @SQLCommand; + + IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN + SET @return_status_text = 'Setting database back to the full recovery model was successfully completed!'; + PRINT @return_status_text; + END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN + SET @return_status_text = 'Setting database back to the full recovery model returns warnings or has failed, check the ID!'; + PRINT @return_status_text; + END; + ----------------------------------------------------------------------------------------------------------------------------- + + --===============================================-- Log result to table --=================================================-- + IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN + INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); + END; + ----------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + PRINT 'No shrink action neccessary!'; + END; + ----------------------------------------------------------------------------------------------------------------------------- - --===================================================-- Now, do it! --=====================================================-- - IF (@return_status = 0) BEGIN - PRINT 'Shrink the truncated log file to 10% of its current size or the minimum size, whichever is larger.'; - IF (@ProductMainVersion >= 16) BEGIN - IF (@FORCE = 1) BEGIN - SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeInMB AS VARCHAR) + ') WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT = BLOCKERS), NO_INFOMSGS;'; END; ELSE BEGIN - SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeInMB AS VARCHAR) + ') WITH WAIT_AT_LOW_PRIORITY (ABORT_AFTER_WAIT = SELF), NO_INFOMSGS;'; + PRINT 'Skipping to shrink the log file!'; END; - END; ELSE BEGIN - PRINT 'Because of the sql server version, DBCC SHRINKFILE is not applicable with the FORCE parameter!'; - SET @SQLCommand = N'USE [' + @DBName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''', ' + CAST(@TargetLogFileSizeInMB AS VARCHAR) + ') WITH NO_INFOMSGS;'; - END; - - EXEC @return_status = sp_executesql @SQLCommand; - - IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN - SET @return_status_text = 'Shrinking the database log file was successfully completed!'; - PRINT @return_status_text; - END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN - SET @return_status_text = 'Shrinking the database log file returns warnings or has failed, check the ID!'; - PRINT @return_status_text; - END; - - END; ELSE BEGIN - SET @return_status_text = 'Shrinking the database log was skipped because of previouse error(s)!'; - END; - ----------------------------------------------------------------------------------------------------------------------------- - - --===============================================-- Log result to table --=================================================-- - IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN - IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN - INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) - VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); - END; - END; - ----------------------------------------------------------------------------------------------------------------------------- - - --=============================================-- Change db recovery mode --===============================================-- - PRINT 'Reset the database recovery model.' - SET @SQLCommand = N'ALTER DATABASE [' + @DBName + '] SET RECOVERY FULL'; - EXEC @return_status = sp_executesql @SQLCommand; - - IF ((@LOGLEVEL in ('INFO')) and (@return_status = 0)) BEGIN - SET @return_status_text = 'Setting database back to the full recovery model was successfully completed!'; - PRINT @return_status_text; - END; ELSE IF ((@LOGLEVEL in ('WARN')) and (@return_status <> 0)) BEGIN - SET @return_status_text = 'Setting database back to the full recovery model returns warnings or has failed, check the ID!'; - PRINT @return_status_text; - END; - ----------------------------------------------------------------------------------------------------------------------------- - - --===============================================-- Log result to table --=================================================-- - IF ((@LOGLEVEL in ('INFO','WARN')) and (@return_status is not null) and (@return_status_text is not null)) BEGIN - IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_MAINTAIN_DATABASES_LOG') BEGIN - INSERT INTO [TBDD_MAINTAIN_DATABASES_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) - VALUES (@LOGLEVEL, 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); - END; - END; - ----------------------------------------------------------------------------------------------------------------------------- - - END; ELSE BEGIN - PRINT 'No shrink action neccessary!'; - END; - ----------------------------------------------------------------------------------------------------------------------------- - - END; ELSE BEGIN - PRINT 'Skipping to shrink the log file!'; - END; - ----------------------------------------------------------------------------------------------------------------------------- - - - - - - - - - - + ----------------------------------------------------------------------------------------------------------------------------- END; ELSE BEGIN @@ -554,10 +526,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES ('ERROR', 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -572,10 +542,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES ('ERROR', 'db_cursor', @DBName, @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -589,10 +557,8 @@ BEGIN --================================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [ADDED_WHO], [ADDED_WHEN]) + VALUES ('ERROR', 'db_cursor', @DBName, ERROR_MESSAGE(),@MyProcedureName,GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- @@ -620,10 +586,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_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; ----------------------------------------------------------------------------------------------------------------------------- @@ -652,10 +616,8 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_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; ----------------------------------------------------------------------------------------------------------------------------- @@ -669,30 +631,26 @@ BEGIN --===============================================-- 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; + INSERT INTO [TBDD_BACKUP_DATABASE_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; ----------------------------------------------------------------------------------------------------------------------------- - SET @return_status_text = 'END ' + @MyProcedureName + ' @ ' + CONVERT(NVARCHAR(50),GETDATE(),120); + SET @return_status_text = 'END PROCEDURE [' + @MyProcedureName + '] @ ' + CONVERT(NVARCHAR(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; + INSERT INTO [TBDD_BACKUP_DATABASE_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [ADDED_WHO], [ADDED_WHEN]) + VALUES (@LOGLEVEL, 'closing', 'procedure', @return_status, @return_status_text, @MyProcedureName, GetDate()); END; ----------------------------------------------------------------------------------------------------------------------------- PRINT ''; - PRINT 'PROCEDURE - ' + @return_status_text; - PRINT '==============================='; + PRINT @return_status_text; + PRINT '===================================================================================================='; Return @return_status;