Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
6a1e2d7
Improved the input parameter checking for @MaxTransferSize in Databas…
olahallengren Mar 20, 2018
7d6d70f
Fixed an issue with consistency checks on databases in availability g…
olahallengren Mar 21, 2018
3e70365
Added a check for suspect databases in DatabaseBackup, DatabaseIntegr…
olahallengren Mar 22, 2018
3137c0b
Add files via upload
olahallengren Mar 27, 2018
1f383ba
Add files via upload
olahallengren Mar 28, 2018
428b807
Add files via upload
olahallengren Mar 30, 2018
6ccdfda
Add files via upload
olahallengren Mar 30, 2018
ace2c37
Add files via upload
olahallengren Mar 31, 2018
71fe57f
Update README.md
olahallengren Mar 31, 2018
952b939
Add files via upload
olahallengren Apr 1, 2018
9abd07f
Add files via upload
olahallengren Apr 2, 2018
c1d5ce8
Add files via upload
olahallengren Apr 2, 2018
e4fa328
Add files via upload
olahallengren Apr 5, 2018
afa0bc3
Add files via upload
olahallengren Apr 9, 2018
b720091
Add files via upload
olahallengren Apr 12, 2018
0561706
Add files via upload
olahallengren Apr 13, 2018
9b55745
Add files via upload
olahallengren Apr 20, 2018
503b14d
Add files via upload
olahallengren Apr 20, 2018
4223da8
Add files via upload
olahallengren Apr 24, 2018
5862c53
Add files via upload
olahallengren Apr 27, 2018
6e28025
Add files via upload
olahallengren Apr 28, 2018
e0fa1a9
Add files via upload
olahallengren May 9, 2018
625623f
Add files via upload
olahallengren May 10, 2018
b63eb27
Add files via upload
olahallengren May 13, 2018
21ea6fc
Add files via upload
olahallengren May 21, 2018
3743c78
Add files via upload
olahallengren May 23, 2018
b7f333b
Add files via upload
olahallengren May 28, 2018
d1d320d
Add files via upload
olahallengren May 30, 2018
313096d
Add files via upload
olahallengren Jun 1, 2018
77b0585
Add files via upload
olahallengren Jun 2, 2018
e544f3d
Add files via upload
olahallengren Jun 3, 2018
7d5bbed
Add files via upload
olahallengren Jun 3, 2018
02061f1
Add files via upload
olahallengren Jun 3, 2018
fdf1d59
Add files via upload
olahallengren Jun 4, 2018
336c848
Update README.md
olahallengren Jun 4, 2018
f254dd3
Add files via upload
olahallengren Jun 5, 2018
a2a8f3e
Add files via upload
olahallengren Jun 5, 2018
26c0d99
Add files via upload
olahallengren Jun 5, 2018
0d1b36b
Add files via upload
olahallengren Jun 6, 2018
8ae5950
Add files via upload
olahallengren Jun 9, 2018
a37f114
Add files via upload
olahallengren Jun 10, 2018
d4cb0fa
Add files via upload
olahallengren Jun 10, 2018
14cc7d5
Add files via upload
olahallengren Jun 11, 2018
dadbe69
Add files via upload
olahallengren Jun 11, 2018
52f3e91
Add files via upload
olahallengren Jun 15, 2018
f8d8e36
Add files via upload
olahallengren Jun 16, 2018
626d566
Add files via upload
olahallengren Jun 18, 2018
65137b3
Update README.md
olahallengren Jun 18, 2018
401efef
Add files via upload
olahallengren Jun 20, 2018
2386b72
Add files via upload
olahallengren Jun 20, 2018
f83654c
Add files via upload
olahallengren Jun 20, 2018
097eb55
Add files via upload
olahallengren Jun 20, 2018
c989ef4
Add files via upload
olahallengren Jun 23, 2018
b87ef0b
Add files via upload
olahallengren Jun 24, 2018
073b8ee
Add files via upload
olahallengren Jun 27, 2018
414500d
Update README.md
olahallengren Jul 10, 2018
6647eed
Add files via upload
olahallengren Jul 16, 2018
578f147
Add files via upload
olahallengren Oct 28, 2018
e02d124
Add files via upload
olahallengren Oct 28, 2018
d7927be
Add files via upload
olahallengren Dec 29, 2018
774f139
Add files via upload
olahallengren Dec 29, 2018
2b5f21a
Add files via upload
olahallengren Dec 29, 2018
77c5158
Add files via upload
olahallengren Dec 29, 2018
0c6bd28
Add files via upload
olahallengren Dec 29, 2018
e8a673e
Add files via upload
olahallengren Dec 30, 2018
21dede5
Update issue templates
olahallengren Dec 31, 2018
3768f72
Update issue templates
olahallengren Dec 31, 2018
fa7b0f0
Update issue templates
olahallengren Dec 31, 2018
67db1c3
Update issue templates
olahallengren Dec 31, 2018
dc287f1
Update issue templates
olahallengren Dec 31, 2018
663e68b
Update issue templates
olahallengren Dec 31, 2018
ba21248
Update issue templates
olahallengren Dec 31, 2018
35bfe9c
Update issue templates
olahallengren Dec 31, 2018
ccfc039
Update issue templates
olahallengren Dec 31, 2018
4be8541
Update issue templates
olahallengren Dec 31, 2018
2f7c373
Update issue templates
olahallengren Dec 31, 2018
d3cce2f
Update issue templates
olahallengren Dec 31, 2018
161bbbd
Update issue templates
olahallengren Dec 31, 2018
424bc80
Update issue templates
olahallengren Dec 31, 2018
401ed40
Update issue templates
olahallengren Dec 31, 2018
df790fc
Update issue templates
olahallengren Dec 31, 2018
c31f452
Update LICENSE
olahallengren Jan 1, 2019
ae2a227
Update README.md
olahallengren Jan 1, 2019
27bdbc0
Update README.md
olahallengren Jan 1, 2019
d5bd5a0
Add files via upload
olahallengren Jan 1, 2019
67c063a
Add files via upload
olahallengren Jan 1, 2019
5d23fc3
Add files via upload
olahallengren Jan 1, 2019
02d565b
Add files via upload
olahallengren Jan 5, 2019
fb098ff
Add files via upload
olahallengren Jan 5, 2019
ca4c898
Add files via upload
olahallengren Jan 6, 2019
a267183
Add files via upload
olahallengren Jan 6, 2019
fc1a6bd
Update issue templates
olahallengren Jan 10, 2019
410db79
Add files via upload
olahallengren Jan 11, 2019
936ef1f
Add files via upload
olahallengren Jan 12, 2019
09378fe
Add files via upload
olahallengren Jan 13, 2019
4aa2d98
Add files via upload
olahallengren Feb 10, 2019
9ed3b94
Add files via upload
olahallengren Apr 28, 2019
b286009
Add files via upload
olahallengren May 22, 2019
2b6c2ac
Add files via upload
olahallengren May 22, 2019
9b5e3cc
Add files via upload
olahallengren Jun 7, 2019
8a0d49d
Add files via upload
olahallengren Jun 9, 2019
0736b11
Add files via upload
olahallengren Jun 10, 2019
baee68f
Add files via upload
olahallengren Jun 13, 2019
20bdfbe
Update README.md
olahallengren Dec 1, 2019
8518c6e
Add files via upload
olahallengren Dec 1, 2019
301e1e1
Add files via upload
olahallengren Dec 26, 2019
342a840
Add files via upload
olahallengren Dec 26, 2019
fee77b3
Update README.md
olahallengren Dec 29, 2019
16f1a8c
Update README.md
olahallengren Dec 29, 2019
51ff04a
Update README.md
olahallengren Dec 29, 2019
b0b76e6
Update README.md
olahallengren Dec 29, 2019
2c79441
Add files via upload
olahallengren Dec 29, 2019
af511c8
Add files via upload
olahallengren Dec 29, 2019
4ca4bdd
Add files via upload
olahallengren Dec 30, 2019
05d05d0
Add files via upload
olahallengren Dec 31, 2019
2d8c933
Add files via upload
olahallengren Dec 31, 2019
8b8871e
Update README.md
olahallengren Dec 31, 2019
326a6a4
Update README.md
olahallengren Dec 31, 2019
d360367
Update README.md
olahallengren Dec 31, 2019
a949362
Update README.md
olahallengren Dec 31, 2019
8236557
Update README.md
olahallengren Dec 31, 2019
d76e5c7
Update README.md
olahallengren Dec 31, 2019
7db6081
Update README.md
olahallengren Dec 31, 2019
994b93d
Update README.md
olahallengren Dec 31, 2019
aef7acc
Update README.md
olahallengren Dec 31, 2019
73573bb
Update README.md
olahallengren Dec 31, 2019
904cdf6
Update README.md
olahallengren Dec 31, 2019
84b7ef3
Update README.md
olahallengren Dec 31, 2019
345fbe9
Update README.md
olahallengren Dec 31, 2019
cf26482
Update README.md
olahallengren Dec 31, 2019
5951959
Add files via upload
olahallengren Dec 31, 2019
681311d
Update README.md
olahallengren Dec 31, 2019
77058e7
Update README.md
olahallengren Dec 31, 2019
deffce8
Update LICENSE
olahallengren Jan 1, 2020
714606a
Add files via upload
olahallengren Jan 1, 2020
2ef77e9
Add files via upload
olahallengren Jan 2, 2020
5feff68
Add files via upload
olahallengren Jan 2, 2020
4089608
Add files via upload
olahallengren Jan 2, 2020
292242a
Add files via upload
olahallengren Jan 3, 2020
4997bf9
Add files via upload
olahallengren Jan 5, 2020
fe76359
Update README.md
olahallengren Jan 5, 2020
455a780
Add files via upload
olahallengren Jan 6, 2020
ab81421
Add files via upload
olahallengren Jan 6, 2020
bec09a7
Add files via upload
olahallengren Jan 8, 2020
f257fc0
Add files via upload
olahallengren Jan 9, 2020
517fea1
Add files via upload
olahallengren Jan 10, 2020
365dd02
Add files via upload
olahallengren Jan 11, 2020
71c20cd
Add files via upload
olahallengren Jan 11, 2020
f7c1709
Add files via upload
olahallengren Jan 11, 2020
a6b9d75
Add files via upload
olahallengren Jan 11, 2020
450d24c
Add files via upload
olahallengren Jan 11, 2020
16175b8
Add files via upload
olahallengren Jan 12, 2020
5df350a
Add files via upload
olahallengren Jan 13, 2020
1ebeba2
Add files via upload
olahallengren Jan 14, 2020
b551a6b
Add files via upload
olahallengren Jan 26, 2020
a05ee43
Add files via upload
olahallengren Jan 26, 2020
e7406a1
Add files via upload
olahallengren Jan 26, 2020
d76ec19
Add files via upload
olahallengren Jan 26, 2020
588c165
Add files via upload
olahallengren Jan 26, 2020
9a855af
Add files via upload
olahallengren Oct 25, 2020
a0661ef
Add files via upload
olahallengren Nov 1, 2020
1f55a0f
Add files via upload
olahallengren Nov 15, 2020
71cf3a2
Add files via upload
olahallengren Nov 15, 2020
c599c55
Add files via upload
olahallengren Nov 15, 2020
1beb00e
Update issue templates
olahallengren Nov 20, 2020
431220e
Add files via upload
olahallengren Nov 21, 2020
3a70c13
Add files via upload
olahallengren Nov 21, 2020
6cafaff
Update README.md
olahallengren Nov 21, 2020
a1964db
Add files via upload
olahallengren Nov 22, 2020
316c3bb
Add files via upload
olahallengren Nov 26, 2020
c3705fb
Add files via upload
olahallengren Nov 26, 2020
75aee8d
Add files via upload
olahallengren Nov 28, 2020
1af0651
Add files via upload
olahallengren Nov 29, 2020
b4e7cf1
Add files via upload
olahallengren Nov 29, 2020
64c7201
Add files via upload
olahallengren Nov 29, 2020
47af302
Add files via upload
olahallengren Dec 5, 2020
bde8aeb
Add files via upload
olahallengren Dec 5, 2020
0ec396b
Add files via upload
olahallengren Dec 31, 2020
4e6c932
Update LICENSE
olahallengren Jan 1, 2021
5f5e9d3
Add files via upload
olahallengren Dec 30, 2021
36b1236
Add files via upload
olahallengren Dec 31, 2021
7c88f4f
Update LICENSE
olahallengren Jan 1, 2022
af934ef
Add files via upload
olahallengren Jan 2, 2022
499c42b
Add files via upload
olahallengren Dec 3, 2022
8686995
Update README.md
olahallengren Dec 3, 2022
9ee2513
Update README.md
olahallengren Dec 3, 2022
3fb051d
Update LICENSE
olahallengren Jan 8, 2023
bd9f54f
Update LICENSE
olahallengren Oct 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.sql linguist-language=TSQL
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Description of the issue**

**SQL Server version and edition**
Execute ```SELECT @@VERSION```

**Version of the script**
Check the header of the stored procedure

**What command are you executing?**

**What output are you getting?**
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Description of the feature**
It can be a new feature, or a change to an existing feature
207 changes: 154 additions & 53 deletions CommandExecute.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CommandExecute]
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CommandExecute]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[CommandExecute] AS'
END
GO
ALTER PROCEDURE [dbo].[CommandExecute]

@DatabaseContext nvarchar(max),
@Command nvarchar(max),
@CommandType nvarchar(max),
@Mode int,
Expand All @@ -17,6 +23,8 @@ CREATE PROCEDURE [dbo].[CommandExecute]
@StatisticsName nvarchar(max) = NULL,
@PartitionNumber int = NULL,
@ExtendedInfo xml = NULL,
@LockMessageSeverity int = 16,
@ExecuteAsUser nvarchar(max) = NULL,
@LogToTable nvarchar(max),
@Execute nvarchar(max)

Expand All @@ -25,7 +33,10 @@ AS
BEGIN

----------------------------------------------------------------------------------------------------
--// Source: https://ola.hallengren.com //--
--// Source: https://ola.hallengren.com //--
--// License: https://ola.hallengren.com/license.html //--
--// GitHub: https://github.com/olahallengren/sql-server-maintenance-solution //--
--// Version: 2022-12-03 17:23:44 //--
----------------------------------------------------------------------------------------------------

SET NOCOUNT ON
Expand All @@ -34,95 +45,170 @@ BEGIN
DECLARE @EndMessage nvarchar(max)
DECLARE @ErrorMessage nvarchar(max)
DECLARE @ErrorMessageOriginal nvarchar(max)
DECLARE @Severity int

DECLARE @Errors TABLE (ID int IDENTITY PRIMARY KEY,
[Message] nvarchar(max) NOT NULL,
Severity int NOT NULL,
[State] int)

DECLARE @StartTime datetime
DECLARE @EndTime datetime
DECLARE @CurrentMessage nvarchar(max)
DECLARE @CurrentSeverity int
DECLARE @CurrentState int

DECLARE @StartTimeSec datetime
DECLARE @EndTimeSec datetime
DECLARE @sp_executesql nvarchar(max) = QUOTENAME(@DatabaseContext) + '.sys.sp_executesql'

DECLARE @StartTime datetime2
DECLARE @EndTime datetime2

DECLARE @ID int

DECLARE @Error int
DECLARE @ReturnCode int
DECLARE @Error int = 0
DECLARE @ReturnCode int = 0

DECLARE @EmptyLine nvarchar(max) = CHAR(9)

SET @Error = 0
SET @ReturnCode = 0
DECLARE @RevertCommand nvarchar(max)

----------------------------------------------------------------------------------------------------
--// Check core requirements //--
----------------------------------------------------------------------------------------------------

IF @LogToTable = 'Y' AND NOT EXISTS (SELECT * FROM sys.objects objects INNER JOIN sys.schemas schemas ON objects.[schema_id] = schemas.[schema_id] WHERE objects.[type] = 'U' AND schemas.[name] = 'dbo' AND objects.[name] = 'CommandLog')
IF NOT (SELECT [compatibility_level] FROM sys.databases WHERE database_id = DB_ID()) >= 90
BEGIN
SET @ErrorMessage = 'The table CommandLog is missing. Download https://ola.hallengren.com/scripts/CommandLog.sql.' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@ErrorMessage,16,1) WITH NOWAIT
SET @Error = @@ERROR
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The database ' + QUOTENAME(DB_NAME(DB_ID())) + ' has to be in compatibility level 90 or higher.', 16, 1
END

IF @Error <> 0
IF NOT (SELECT uses_ansi_nulls FROM sys.sql_modules WHERE [object_id] = @@PROCID) = 1
BEGIN
SET @ReturnCode = @Error
GOTO ReturnCode
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'ANSI_NULLS has to be set to ON for the stored procedure.', 16, 1
END

IF NOT (SELECT uses_quoted_identifier FROM sys.sql_modules WHERE [object_id] = @@PROCID) = 1
BEGIN
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'QUOTED_IDENTIFIER has to be set to ON for the stored procedure.', 16, 1
END

IF @LogToTable = 'Y' AND NOT EXISTS (SELECT * FROM sys.objects objects INNER JOIN sys.schemas schemas ON objects.[schema_id] = schemas.[schema_id] WHERE objects.[type] = 'U' AND schemas.[name] = 'dbo' AND objects.[name] = 'CommandLog')
BEGIN
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The table CommandLog is missing. Download https://ola.hallengren.com/scripts/CommandLog.sql.', 16, 1
END

----------------------------------------------------------------------------------------------------
--// Check input parameters //--
----------------------------------------------------------------------------------------------------

IF @DatabaseContext IS NULL OR NOT EXISTS (SELECT * FROM sys.databases WHERE name = @DatabaseContext)
BEGIN
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The value for the parameter @DatabaseContext is not supported.', 16, 1
END

IF @Command IS NULL OR @Command = ''
BEGIN
SET @ErrorMessage = 'The value for the parameter @Command is not supported.' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@ErrorMessage,16,1) WITH NOWAIT
SET @Error = @@ERROR
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The value for the parameter @Command is not supported.', 16, 1
END

IF @CommandType IS NULL OR @CommandType = '' OR LEN(@CommandType) > 60
BEGIN
SET @ErrorMessage = 'The value for the parameter @CommandType is not supported.' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@ErrorMessage,16,1) WITH NOWAIT
SET @Error = @@ERROR
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The value for the parameter @CommandType is not supported.', 16, 1
END

IF @Mode NOT IN(1,2) OR @Mode IS NULL
BEGIN
SET @ErrorMessage = 'The value for the parameter @Mode is not supported.' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@ErrorMessage,16,1) WITH NOWAIT
SET @Error = @@ERROR
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The value for the parameter @Mode is not supported.', 16, 1
END

IF @LockMessageSeverity NOT IN(10,16) OR @LockMessageSeverity IS NULL
BEGIN
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The value for the parameter @LockMessageSeverity is not supported.', 16, 1
END

IF LEN(@ExecuteAsUser) > 128
BEGIN
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The value for the parameter @ExecuteAsUser is not supported.', 16, 1
END

IF @LogToTable NOT IN('Y','N') OR @LogToTable IS NULL
BEGIN
SET @ErrorMessage = 'The value for the parameter @LogToTable is not supported.' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@ErrorMessage,16,1) WITH NOWAIT
SET @Error = @@ERROR
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The value for the parameter @LogToTable is not supported.', 16, 1
END

IF @Execute NOT IN('Y','N') OR @Execute IS NULL
BEGIN
SET @ErrorMessage = 'The value for the parameter @Execute is not supported.' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@ErrorMessage,16,1) WITH NOWAIT
SET @Error = @@ERROR
INSERT INTO @Errors ([Message], Severity, [State])
SELECT 'The value for the parameter @Execute is not supported.', 16, 1
END

IF @Error <> 0
----------------------------------------------------------------------------------------------------
--// Raise errors //--
----------------------------------------------------------------------------------------------------

DECLARE ErrorCursor CURSOR FAST_FORWARD FOR SELECT [Message], Severity, [State] FROM @Errors ORDER BY [ID] ASC

OPEN ErrorCursor

FETCH ErrorCursor INTO @CurrentMessage, @CurrentSeverity, @CurrentState

WHILE @@FETCH_STATUS = 0
BEGIN
SET @ReturnCode = @Error
RAISERROR('%s', @CurrentSeverity, @CurrentState, @CurrentMessage) WITH NOWAIT
RAISERROR(@EmptyLine, 10, 1) WITH NOWAIT

FETCH NEXT FROM ErrorCursor INTO @CurrentMessage, @CurrentSeverity, @CurrentState
END

CLOSE ErrorCursor

DEALLOCATE ErrorCursor

IF EXISTS (SELECT * FROM @Errors WHERE Severity >= 16)
BEGIN
SET @ReturnCode = 50000
GOTO ReturnCode
END

----------------------------------------------------------------------------------------------------
--// Execute as user //--
----------------------------------------------------------------------------------------------------

IF @ExecuteAsUser IS NOT NULL
BEGIN
SET @Command = 'EXECUTE AS USER = ''' + REPLACE(@ExecuteAsUser,'''','''''') + '''; ' + @Command + '; REVERT;'

SET @RevertCommand = 'REVERT'
END

----------------------------------------------------------------------------------------------------
--// Log initial information //--
----------------------------------------------------------------------------------------------------

SET @StartTime = GETDATE()
SET @StartTimeSec = CONVERT(datetime,CONVERT(nvarchar,@StartTime,120),120)
SET @StartTime = SYSDATETIME()

SET @StartMessage = 'Date and time: ' + CONVERT(nvarchar,@StartTimeSec,120) + CHAR(13) + CHAR(10)
SET @StartMessage = @StartMessage + 'Command: ' + @Command
IF @Comment IS NOT NULL SET @StartMessage = @StartMessage + CHAR(13) + CHAR(10) + 'Comment: ' + @Comment
SET @StartMessage = REPLACE(@StartMessage,'%','%%')
RAISERROR(@StartMessage,10,1) WITH NOWAIT
SET @StartMessage = 'Date and time: ' + CONVERT(nvarchar,@StartTime,120)
RAISERROR('%s',10,1,@StartMessage) WITH NOWAIT

SET @StartMessage = 'Database context: ' + QUOTENAME(@DatabaseContext)
RAISERROR('%s',10,1,@StartMessage) WITH NOWAIT

SET @StartMessage = 'Command: ' + @Command
RAISERROR('%s',10,1,@StartMessage) WITH NOWAIT

IF @Comment IS NOT NULL
BEGIN
SET @StartMessage = 'Comment: ' + @Comment
RAISERROR('%s',10,1,@StartMessage) WITH NOWAIT
END

IF @LogToTable = 'Y'
BEGIN
Expand All @@ -138,37 +224,52 @@ BEGIN

IF @Mode = 1 AND @Execute = 'Y'
BEGIN
EXECUTE(@Command)
EXECUTE @sp_executesql @stmt = @Command
SET @Error = @@ERROR
SET @ReturnCode = @Error
END

IF @Mode = 2 AND @Execute = 'Y'
BEGIN
BEGIN TRY
EXECUTE(@Command)
EXECUTE @sp_executesql @stmt = @Command
END TRY
BEGIN CATCH
SET @Error = ERROR_NUMBER()
SET @ReturnCode = @Error
SET @ErrorMessageOriginal = ERROR_MESSAGE()
SET @ErrorMessage = 'Msg ' + CAST(@Error AS nvarchar) + ', ' + ISNULL(@ErrorMessageOriginal,'')
RAISERROR(@ErrorMessage,16,1) WITH NOWAIT

SET @ErrorMessage = 'Msg ' + CAST(ERROR_NUMBER() AS nvarchar) + ', ' + ISNULL(ERROR_MESSAGE(),'')
SET @Severity = CASE WHEN ERROR_NUMBER() IN(1205,1222) THEN @LockMessageSeverity ELSE 16 END
RAISERROR('%s',@Severity,1,@ErrorMessage) WITH NOWAIT

IF NOT (ERROR_NUMBER() IN(1205,1222) AND @LockMessageSeverity = 10)
BEGIN
SET @ReturnCode = ERROR_NUMBER()
END

IF @ExecuteAsUser IS NOT NULL
BEGIN
EXECUTE @sp_executesql @RevertCommand
END
END CATCH
END

----------------------------------------------------------------------------------------------------
--// Log completing information //--
----------------------------------------------------------------------------------------------------

SET @EndTime = GETDATE()
SET @EndTimeSec = CONVERT(datetime,CONVERT(varchar,@EndTime,120),120)
SET @EndTime = SYSDATETIME()

SET @EndMessage = 'Outcome: ' + CASE WHEN @Execute = 'N' THEN 'Not Executed' WHEN @Error = 0 THEN 'Succeeded' ELSE 'Failed' END
RAISERROR('%s',10,1,@EndMessage) WITH NOWAIT

SET @EndMessage = 'Duration: ' + CASE WHEN (DATEDIFF(SECOND,@StartTime,@EndTime) / (24 * 3600)) > 0 THEN CAST((DATEDIFF(SECOND,@StartTime,@EndTime) / (24 * 3600)) AS nvarchar) + '.' ELSE '' END + CONVERT(nvarchar,DATEADD(SECOND,DATEDIFF(SECOND,@StartTime,@EndTime),'1900-01-01'),108)
RAISERROR('%s',10,1,@EndMessage) WITH NOWAIT

SET @EndMessage = 'Date and time: ' + CONVERT(nvarchar,@EndTime,120)
RAISERROR('%s',10,1,@EndMessage) WITH NOWAIT

SET @EndMessage = 'Outcome: ' + CASE WHEN @Execute = 'N' THEN 'Not Executed' WHEN @Error = 0 THEN 'Succeeded' ELSE 'Failed' END + CHAR(13) + CHAR(10)
SET @EndMessage = @EndMessage + 'Duration: ' + CASE WHEN DATEDIFF(ss,@StartTimeSec, @EndTimeSec)/(24*3600) > 0 THEN CAST(DATEDIFF(ss,@StartTimeSec, @EndTimeSec)/(24*3600) AS nvarchar) + '.' ELSE '' END + CONVERT(nvarchar,@EndTimeSec - @StartTimeSec,108) + CHAR(13) + CHAR(10)
SET @EndMessage = @EndMessage + 'Date and time: ' + CONVERT(nvarchar,@EndTimeSec,120) + CHAR(13) + CHAR(10) + ' '
SET @EndMessage = REPLACE(@EndMessage,'%','%%')
RAISERROR(@EndMessage,10,1) WITH NOWAIT
RAISERROR(@EmptyLine,10,1) WITH NOWAIT

IF @LogToTable = 'Y'
BEGIN
Expand Down
41 changes: 23 additions & 18 deletions CommandLog.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,30 @@
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CommandLog]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[CommandLog](
[ID] int IDENTITY(1,1) NOT NULL CONSTRAINT [PK_CommandLog] PRIMARY KEY CLUSTERED,
[DatabaseName] sysname NULL,
[SchemaName] sysname NULL,
[ObjectName] sysname NULL,
[ObjectType] char(2) NULL,
[IndexName] sysname NULL,
[IndexType] tinyint NULL,
[StatisticsName] sysname NULL,
[PartitionNumber] int NULL,
[ExtendedInfo] xml NULL,
[Command] nvarchar(max) NOT NULL,
[CommandType] nvarchar(60) NOT NULL,
[StartTime] datetime NOT NULL,
[EndTime] datetime NULL,
[ErrorNumber] int NULL,
[ErrorMessage] nvarchar(max) NULL
[ID] [int] IDENTITY(1,1) NOT NULL,
[DatabaseName] [sysname] NULL,
[SchemaName] [sysname] NULL,
[ObjectName] [sysname] NULL,
[ObjectType] [char](2) NULL,
[IndexName] [sysname] NULL,
[IndexType] [tinyint] NULL,
[StatisticsName] [sysname] NULL,
[PartitionNumber] [int] NULL,
[ExtendedInfo] [xml] NULL,
[Command] [nvarchar](max) NOT NULL,
[CommandType] [nvarchar](60) NOT NULL,
[StartTime] [datetime2](7) NOT NULL,
[EndTime] [datetime2](7) NULL,
[ErrorNumber] [int] NULL,
[ErrorMessage] [nvarchar](max) NULL,
CONSTRAINT [PK_CommandLog] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
END
GO

Loading