Skip to content

Commit 10166c6

Browse files
committed
Add MIT license, add Statement GUID and Step number columns to log table
1 parent 6d0bf32 commit 10166c6

File tree

1 file changed

+36
-22
lines changed

1 file changed

+36
-22
lines changed

Stored_Procedure/sp_BenchmarkTSQL.sql

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,18 @@ ALTER PROCEDURE dbo.sp_BenchmarkTSQL(
4646
4747
.EXAMPLE
4848
EXEC sp_BenchmarkTSQL @tsqlStatement = 'SELECT TOP(100000) * FROM sys.objects AS o1 CROSS JOIN sys.objects AS o2 CROSS JOIN sys.objects AS o3;'
49-
, @numberOfExecution = 100
49+
, @numberOfExecution = 10
5050
, @saveResults = 1
5151
, @calcMedian = 1
5252
, @clearCache = 1
5353
, @printStepInfo = 0
5454
, @durationAccuracy = 'ms';
5555
56+
.LICENSE MIT
57+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
58+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
59+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
60+
5661
.NOTE
5762
Author: Aleksei Nagorskii
5863
Created date: 2017-12-14
@@ -69,6 +74,10 @@ ALTER PROCEDURE dbo.sp_BenchmarkTSQL(
6974
Author: Konstantin Taranov
7075
Modified date: 2017-12-25
7176
Version: 2.1
77+
78+
Author: Konstantin Taranov
79+
Modified date: 2018-01-01
80+
Version: 2.2
7281
*/
7382
AS
7483
BEGIN TRY
@@ -116,18 +125,19 @@ BEGIN TRY
116125
THROW 55004, @err_msg, 1;
117126
END
118127

119-
DECLARE @crlf VARCHAR(10) = CHAR(10);
120-
DECLARE @cts DATETIME2(7) = CURRENT_TIMESTAMP;
121-
DECLARE @r INT = 0;
122-
DECLARE @min BIGINT;
123-
DECLARE @avg BIGINT;
124-
DECLARE @max BIGINT;
125-
DECLARE @median REAL;
126-
DECLARE @plan_handle VARBINARY(64);
127-
DECLARE @rts DATETIME2(7);
128-
DECLARE @finishTime DATETIME2(7);
129-
DECLARE @duration INT;
130-
DECLARE @startTime VARCHAR(27);
128+
DECLARE @crlf VARCHAR(10) = CHAR(10);
129+
DECLARE @cts DATETIME2(7) = CURRENT_TIMESTAMP;
130+
DECLARE @r INT = 0;
131+
DECLARE @min BIGINT;
132+
DECLARE @avg BIGINT;
133+
DECLARE @max BIGINT;
134+
DECLARE @median REAL;
135+
DECLARE @plan_handle VARBINARY(64);
136+
DECLARE @rts DATETIME2(7);
137+
DECLARE @finishTime DATETIME2(7);
138+
DECLARE @duration INT;
139+
DECLARE @startTime VARCHAR(27);
140+
DECLARE @originalLogin SYSNAME = ORIGINAL_LOGIN();
131141

132142
DECLARE @t TABLE (
133143
StartTimeStamp DATETIME2(7)
@@ -141,7 +151,7 @@ BEGIN TRY
141151
);
142152

143153
SET @startTime = CONVERT(VARCHAR(27), CAST(CURRENT_TIMESTAMP AS DATETIME2(7)), 121);
144-
PRINT('Benchmark started at ' + @startTime);
154+
PRINT('Benchmark started at ' + @startTime + ' by ' + @originalLogin);
145155

146156
WHILE @r < @numberOfExecution
147157
BEGIN
@@ -269,18 +279,19 @@ BEGIN TRY
269279
', Average: ' + CAST(@avg AS VARCHAR(30)) + @durationAccuracy +
270280
CASE WHEN @calcMedian = 1 THEN ', Median: ' + CAST(@median AS VARCHAR(30)) + @durationAccuracy ELSE '' END +
271281
@crlf +
272-
'Benchmark finished at ' + CONVERT(VARCHAR(23), CURRENT_TIMESTAMP, 121) + '.'
282+
'Benchmark finished at ' + CONVERT(VARCHAR(23), CURRENT_TIMESTAMP, 121) + ' by ' + @originalLogin + '.'
273283
);
274284

275285
IF @saveResults = 1
276286

277-
DECLARE @TSQLStatementCHECKSUM INT = CHECKSUM(@tsqlStatement + CAST(ORIGINAL_LOGIN() AS SYSNAME) + @startTime);
287+
DECLARE @TSQLStatementGUID VARCHAR(36) = NEWID();
278288

279289
IF OBJECT_ID('dbo.BenchmarkTSQL', 'U') IS NULL
280290
BEGIN
281291
CREATE TABLE dbo.BenchmarkTSQL(
282292
BenchmarkTSQLID INT IDENTITY NOT NULL
283-
, TSQLStatementCHECKSUM INT NOT NULL
293+
, TSQLStatementGUID VARCHAR(36) NOT NULL
294+
, StepRowNumber INT NOT NULL
284295
, StartTimeStamp DATETIME2(7) NOT NULL
285296
, RunTimeStamp DATETIME2(7) NOT NULL
286297
, FinishTimeStamp DATETIME2(7) NOT NULL
@@ -293,7 +304,8 @@ BEGIN TRY
293304
);
294305

295306
INSERT INTO dbo.BenchmarkTSQL(
296-
TSQLStatementCHECKSUM
307+
TSQLStatementGUID
308+
, StepRowNumber
297309
, StartTimeStamp
298310
, RunTimeStamp
299311
, FinishTimeStamp
@@ -304,7 +316,8 @@ BEGIN TRY
304316
, DurationAccuracy
305317
, OriginalLogin
306318
)
307-
SELECT @TSQLStatementCHECKSUM AS TSQLStatementCHECKSUM
319+
SELECT @TSQLStatementGUID AS TSQLStatementGUID
320+
, ROW_NUMBER() OVER (ORDER BY RunTimeStamp, FinishTimeStamp) AS StepRowNumber
308321
, StartTimeStamp
309322
, RunTimeStamp
310323
, FinishTimeStamp
@@ -313,12 +326,13 @@ BEGIN TRY
313326
, ClearCache
314327
, PrintStepInfo
315328
, DurationAccuracy
316-
, ORIGINAL_LOGIN() AS OriginalLogin
329+
, @originalLogin AS OriginalLogin
317330
FROM @t;
318331
END
319332
ELSE
320333
INSERT INTO dbo.BenchmarkTSQL
321-
SELECT @TSQLStatementCHECKSUM AS TSQLStatementCHECKSUM
334+
SELECT @TSQLStatementGUID AS TSQLStatementGUID
335+
, ROW_NUMBER() OVER (ORDER BY RunTimeStamp, FinishTimeStamp) AS StepRowNumber
322336
, StartTimeStamp
323337
, RunTimeStamp
324338
, FinishTimeStamp
@@ -327,7 +341,7 @@ BEGIN TRY
327341
, ClearCache
328342
, PrintStepInfo
329343
, DurationAccuracy
330-
, ORIGINAL_LOGIN()
344+
, @originalLogin
331345
FROM @t;
332346

333347
SET NOCOUNT ON;

0 commit comments

Comments
 (0)