You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Stored_Procedure/dbo.sp_BenchmarkTSQL.sql
+51-50Lines changed: 51 additions & 50 deletions
Original file line number
Diff line number
Diff line change
@@ -3,18 +3,18 @@ GO
3
3
4
4
5
5
ALTERPROCEDUREdbo.sp_BenchmarkTSQL(
6
-
@tsqlStatementBefore NVARCHAR(MAX) =NULL
7
-
, @tsqlStatement NVARCHAR(MAX)
8
-
, @tsqlStatementAfter NVARCHAR(MAX) =NULL
9
-
, @numberOfExecution INT=10
10
-
, @saveResults BIT=0
11
-
, @skipTSQLCheck BIT=1
12
-
, @clearCache BIT=0
13
-
, @calcMedian BIT=0
14
-
, @printStepInfo BIT=0
15
-
, @durationAccuracy VARCHAR(5) ='ss'
16
-
, @dateTimeFunction VARCHAR(16) ='SYSDATETIME'
17
-
, @additionalInfo BIT=0
6
+
@tsqlStatementBefore nvarchar(max) =NULL
7
+
, @tsqlStatement nvarchar(max)
8
+
, @tsqlStatementAfter nvarchar(max) =NULL
9
+
, @numberOfExecution int=10
10
+
, @saveResults bit=0
11
+
, @skipTSQLCheck bit=1
12
+
, @clearCache bit=0
13
+
, @calcMedian bit=0
14
+
, @printStepInfo bit=0
15
+
, @durationAccuracy varchar(5) ='ss'
16
+
, @dateTimeFunction varchar(16) ='SYSDATETIME'
17
+
, @additionalInfo bit=0
18
18
)
19
19
/*
20
20
.SYNOPSIS
@@ -36,7 +36,7 @@ ALTER PROCEDURE dbo.sp_BenchmarkTSQL(
36
36
Number of execution TSQL statement.
37
37
38
38
.PARAMETER @saveResults
39
-
Save benchmark details to master.dbo.BenchmarkTSQL table if @saveResults = 1. Create table if not exists (see 246 line: CREATE TABLE master.dbo.BenchmarkTSQL …).
39
+
Save benchmark details to master.dbo.BenchmarkTSQL table if @saveResults = 1. Create table if not exists (see 245 line: CREATE TABLE master.dbo.BenchmarkTSQL …).
40
40
41
41
.PARAMETER @skipTSQLCheck
42
42
Checking for valid TSQL statement. Default value is 1 (true) - skip checking.
@@ -108,7 +108,7 @@ ALTER PROCEDURE dbo.sp_BenchmarkTSQL(
108
108
109
109
.EXAMPLE
110
110
DECLARE @tsql nvarchar(max) =N'SET NOCOUNT OFF; DECLARE @tsql nvarchar(max) = N''BACKUP DATABASE [master] TO DISK = N''''C:\master'' +
111
-
REPLACE(CAST(CAST(GETDATE() AS DATETIME2(7)) AS NVARCHAR(MAX)), '':'', '' '') +
111
+
REPLACE(CAST(CAST(GETDATE() AS datetime2(7)) AS nvarchar(max)), '':'', '' '') +
112
112
''.bak'''' WITH NOFORMAT, NOINIT;''
113
113
EXECUTE sp_executesql @tsql;';
114
114
EXEC sp_BenchmarkTSQL
@@ -128,7 +128,7 @@ The above copyright notice and this permission notice shall be included in all c
128
128
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. INNOEVENT 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 ORIN CONNECTION WITH THE SOFTWARE OR THE USEOR OTHER DEALINGS IN THE SOFTWARE.
129
129
130
130
.NOTE
131
-
Version: 5.3
131
+
Version: 5.4
132
132
Created: 2017-12-14by Konstantin Taranov
133
133
Modified: 2019-04-18by Konstantin Taranov
134
134
Main contributors: Konstantin Taranov, Aleksei Nagorskii
DECLARE @MsgError varchar(2000) ='Stored procedure sp_BenchmarkTSQL works only for SQL Server 2008 and higher. Yor ProductMajorVersion is '+
158
-
CAST(@productMajorVersion ASVARCHAR(30)) +
159
-
'. You can try to replace DATETIME2 data type on DATETIME, perhaps it will be enough.';
158
+
CAST(@productMajorVersion ASvarchar(30)) +
159
+
'. You can try to replace datetime2 data type on datetime, perhaps it will be enough.';
160
160
THROW55001, @MsgError, 1;
161
161
END;
162
162
@@ -181,7 +181,7 @@ BEGIN TRY
181
181
THROW55005, '@dateTimeFunction accept only SYSDATETIME and SYSUTCDATETIME. Default value is SYSDATETIME. See https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql', 1;
182
182
183
183
IF @numberOfExecution <=0OR @numberOfExecution >=32000
184
-
THROW55006, '@numberOfExecution must be > 0 and < 32000. If you want more execution then comment 180 and 181 lines.', 1;
184
+
THROW55006, '@numberOfExecution must be > 0 and < 32000. If you want more execution then comment 183 and 184 lines.', 1;
185
185
186
186
IF @skipTSQLCheck =0
187
187
BEGIN
@@ -240,7 +240,7 @@ BEGIN TRY
240
240
END;
241
241
END;
242
242
243
-
IF @saveResults =1ANDOBJECT_ID('master.dbo.BenchmarkTSQL', 'U') ISNULL
243
+
IF @saveResults =1ANDOBJECT_ID(N'master.dbo.BenchmarkTSQL', 'U') ISNULL
244
244
THROW55010, 'Please create master.dbo.BenchmarkTSQL log table before run procedure with @saveResults = 1.
245
245
CREATE TABLE master.dbo.BenchmarkTSQL(
246
246
BenchmarkTSQLID int IDENTITY NOT NULL
@@ -267,7 +267,7 @@ BEGIN TRY
267
267
DECLARE @avg bigint;
268
268
DECLARE @max bigint;
269
269
DECLARE @median real;
270
-
DECLARE @plan_handlevarbinary(64);
270
+
DECLARE @planHandle varbinary(64);
271
271
DECLARE @startStep datetime2(7);
272
272
DECLARE @finishTime datetime2(7);
273
273
DECLARE @stepDuration int;
@@ -322,12 +322,12 @@ BEGIN TRY
322
322
323
323
IF @clearCache =1
324
324
BEGIN
325
-
SELECT @plan_handle= plan_handle
325
+
SELECT @planHandle= plan_handle
326
326
FROMsys.dm_exec_cached_plans
327
327
CROSSAPPLYsys.dm_exec_sql_text(plan_handle)
328
-
WHERE [text] LIKE @tsqlStatement; /* LIKE instead = (equal) because = ignore trailing spaces */
328
+
WHERE [text] LIKE @tsqlStatement; /* LIKE instead = (equal) because = (equal) ignore trailing spaces */
329
329
330
-
IF @plan_handleISNOTNULL DBCC FREEPROCCACHE (@plan_handle);
330
+
IF @planHandleISNOTNULL DBCC FREEPROCCACHE(@planHandle);
331
331
END;
332
332
333
333
IF @tsqlStatementBefore ISNOTNULLAND @tsqlStatementBefore <>''
@@ -449,17 +449,17 @@ BEGIN TRY
449
449
IF @printStepInfo =1
450
450
BEGIN
451
451
/* Using RAISEEROR for interactive step printing http://sqlity.net/en/984/print-vs-raiserror/ */
452
-
SET @RaiseError='Run '+CASEWHEN @stepNumber <10THEN' '+CAST(@stepNumber ASVARCHAR(30))
453
-
WHEN @stepNumber <100THEN' '+CAST(@stepNumber ASVARCHAR(30))
454
-
WHEN @stepNumber <1000THEN' '+CAST(@stepNumber ASVARCHAR(30))
455
-
ELSECAST(@stepNumber ASVARCHAR(30))
452
+
SET @raiseError='Run '+CASEWHEN @stepNumber <10THEN' '+CAST(@stepNumber ASvarchar(30))
453
+
WHEN @stepNumber <100THEN' '+CAST(@stepNumber ASvarchar(30))
454
+
WHEN @stepNumber <1000THEN' '+CAST(@stepNumber ASvarchar(30))
0 commit comments