Skip to content

Commit 92bccdc

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/dev'
2 parents cdbc913 + c2fb061 commit 92bccdc

File tree

7 files changed

+1570
-566
lines changed

7 files changed

+1570
-566
lines changed

DatabaseRestore.sql

Lines changed: 98 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -28,32 +28,25 @@ EXEC dbo.DatabaseRestore
2828
@RunRecovery = 1;
2929
*/
3030

31-
USE [master]
31+
IF OBJECT_ID('dbo.sp_DatabaseRestore') IS NULL
32+
EXEC ('CREATE PROCEDURE dbo.sp_DatabaseRestore AS RETURN 0;')
3233
GO
3334

34-
SET ANSI_NULLS ON
35-
GO
36-
SET QUOTED_IDENTIFIER ON
37-
GO
38-
39-
CREATE PROCEDURE [dbo].[DatabaseRestore]
35+
ALTER PROCEDURE [dbo].[sp_DatabaseRestore]
4036
@Database NVARCHAR(128), @RestoreDatabaseName NVARCHAR(128) = NULL, @BackupPathFull NVARCHAR(MAX), @BackupPathLog NVARCHAR(MAX),
4137
@MoveFiles bit = 0, @MoveDataDrive NVARCHAR(260) = NULL, @MoveLogDrive NVARCHAR(260) = NULL, @TestRestore bit = 0, @RunCheckDB bit = 0,
4238
@ContinueLogs bit = 0, @RunRecovery bit = 0
4339
AS
44-
4540
SET NOCOUNT ON;
4641

4742
DECLARE @cmd NVARCHAR(4000), @sql NVARCHAR(MAX), @LastFullBackup NVARCHAR(500), @BackupFile NVARCHAR(500);
4843
DECLARE @FileList TABLE (BackupFile NVARCHAR(255));
4944

50-
DECLARE @MoveDataLocation AS NVARCHAR(500), @MoveDataLocationName AS NVARCHAR(500), @MoveLogLocation AS NVARCHAR(500), @MoveLogLocationName AS NVARCHAR(500);
51-
5245
IF @RestoreDatabaseName IS NULL
5346
SET @RestoreDatabaseName = @Database;
5447

5548
-- get list of files
56-
SET @cmd = 'DIR /b '+ @BackupPathFull;
49+
SET @cmd = 'DIR /b "'+ @BackupPathFull + '"';
5750
INSERT INTO @FileList (BackupFile)
5851
EXEC master.sys.xp_cmdshell @cmd;
5952

@@ -65,7 +58,23 @@ WHERE BackupFile LIKE '%.bak'
6558
AND
6659
BackupFile LIKE '%'+@Database+'%';
6760

68-
DECLARE @FileListParameters TABLE
61+
-- Get the SQL Server version number because the columns returned by RESTORE commands vary by version
62+
-- Based on: https://www.brentozar.com/archive/2015/05/sql-server-version-detection/
63+
-- Need to capture BuildVersion because RESTORE HEADERONLY changed with 2014 CU1, not RTM
64+
DECLARE @ProductVersion AS varchar(20) = CAST(SERVERPROPERTY ('productversion') AS varchar(20));
65+
DECLARE @MajorVersion AS smallint = CAST(PARSENAME(@ProductVersion, 4) AS smallint);
66+
DECLARE @MinorVersion AS smallint = CAST(PARSENAME(@ProductVersion, 3) AS smallint);
67+
DECLARE @BuildVersion AS smallint = CAST(PARSENAME(@ProductVersion, 2) AS smallint);
68+
69+
IF @MajorVersion < 10
70+
BEGIN
71+
RAISERROR('Sorry, DatabaseRestore doesn''t work on versions of SQL prior to 2008.', 15, 1);
72+
RETURN;
73+
END
74+
75+
-- Build SQL for RESTORE FILELIST ONLY
76+
IF OBJECT_ID(N'tempdb..#FileListParameters') IS NOT NULL DROP TABLE #FileListParameters;
77+
CREATE TABLE #FileListParameters
6978
(
7079
LogicalName NVARCHAR(128) NOT NULL
7180
,PhysicalName NVARCHAR(260) NOT NULL
@@ -90,11 +99,67 @@ DECLARE @FileListParameters TABLE
9099
,TDEThumbprint VARBINARY(32) NULL
91100
,SnapshotUrl NVARCHAR(360) NULL
92101
);
102+
DECLARE @FileListParamSQL AS nvarchar(4000);
103+
SET @FileListParamSQL =
104+
'INSERT INTO #FileListParameters
105+
(LogicalName, PhysicalName, Type, FileGroupName, Size, MaxSize, FileID, CreateLSN, DropLSN
106+
,UniqueID, ReadOnlyLSN, ReadWriteLSN, BackupSizeInBytes, SourceBlockSize, FileGroupID, LogGroupGUID
107+
,DifferentialBaseLSN, DifferentialBaseGUID, IsReadOnly, IsPresent, TDEThumbprint'
108+
109+
IF @MajorVersion >= 13
110+
SET @FileListParamSQL += ', SnapshotUrl'
111+
112+
SET @FileListParamSQL += ')' + CHAR(13) + CHAR(10);
113+
SET @FileListParamSQL += 'EXEC (''RESTORE FILELISTONLY FROM DISK=''''{Path}'''''')';
114+
115+
SET @sql = REPLACE(@FileListParamSQL, '{Path}', @BackupPathFull + @LastFullBackup);
116+
PRINT @sql;
117+
EXEC (@sql);
118+
119+
-- Build SQL for RESTORE HEADERONLY - this will be used a bit further below
120+
IF OBJECT_ID(N'tempdb..#Headers') IS NOT NULL DROP TABLE #Headers;
121+
CREATE TABLE #Headers (
122+
BackupName VARCHAR(256), BackupDescription VARCHAR(256), BackupType VARCHAR(256), ExpirationDate VARCHAR(256),
123+
Compressed VARCHAR(256), Position VARCHAR(256), DeviceType VARCHAR(256), UserName VARCHAR(256), ServerName VARCHAR(
124+
256), DatabaseName VARCHAR(256), DatabaseVersion VARCHAR(256), DatabaseCreationDate VARCHAR(256), BackupSize VARCHAR(
125+
256), FirstLSN VARCHAR(256), LastLSN VARCHAR(256), CheckpointLSN VARCHAR(256), DatabaseBackupLSN VARCHAR(256),
126+
BackupStartDate VARCHAR(256), BackupFinishDate VARCHAR(256), SortOrder VARCHAR(256), CodePage VARCHAR(256),
127+
UnicodeLocaleId VARCHAR(256), UnicodeComparisonStyle VARCHAR(256), CompatibilityLevel VARCHAR(256), SoftwareVendorId
128+
VARCHAR(256), SoftwareVersionMajor VARCHAR(256), SoftwareVersionMinor VARCHAR(256), SoftwareVersionBuild VARCHAR(256),
129+
MachineName VARCHAR(256), Flags VARCHAR(256), BindingID VARCHAR(256), RecoveryForkID VARCHAR(256), Collation VARCHAR(
130+
256), FamilyGUID VARCHAR(256), HasBulkLoggedData VARCHAR(256), IsSnapshot VARCHAR(256), IsReadOnly VARCHAR(256),
131+
IsSingleUser VARCHAR(256), HasBackupChecksums VARCHAR(256), IsDamaged VARCHAR(256), BeginsLogChain VARCHAR(256),
132+
HasIncompleteMetaData VARCHAR(256), IsForceOffline VARCHAR(256), IsCopyOnly VARCHAR(256), FirstRecoveryForkID VARCHAR
133+
(256), ForkPointLSN VARCHAR(256), RecoveryModel VARCHAR(256), DifferentialBaseLSN VARCHAR(256), DifferentialBaseGUID
134+
VARCHAR(256), BackupTypeDescription VARCHAR(256), BackupSetGUID VARCHAR(256), CompressedBackupSize VARCHAR(256),
135+
Containment VARCHAR(256), KeyAlgorithm NVARCHAR(32), EncryptorThumbprint VARBINARY(20), EncryptorType NVARCHAR(32),
136+
--
137+
-- Seq added to retain order by
138+
--
139+
Seq INT NOT NULL IDENTITY(1, 1)
140+
);
93141

94-
INSERT INTO @FileListParameters
95-
EXEC ('RESTORE FILELISTONLY FROM DISK='''+@BackupPathFull + @LastFullBackup+'''');
142+
DECLARE @HeadersSQL AS nvarchar(4000);
143+
SET @HeadersSQL =
144+
'INSERT INTO #Headers
145+
(BackupName, BackupDescription, BackupType, ExpirationDate, Compressed, Position, DeviceType, UserName, ServerName
146+
,DatabaseName, DatabaseVersion, DatabaseCreationDate, BackupSize, FirstLSN, LastLSN, CheckpointLSN, DatabaseBackupLSN
147+
,BackupStartDate, BackupFinishDate, SortOrder, CodePage, UnicodeLocaleId, UnicodeComparisonStyle, CompatibilityLevel
148+
,SoftwareVendorId, SoftwareVersionMajor, SoftwareVersionMinor, SoftwareVersionBuild, MachineName, Flags, BindingID
149+
,RecoveryForkID, Collation, FamilyGUID, HasBulkLoggedData, IsSnapshot, IsReadOnly, IsSingleUser, HasBackupChecksums
150+
,IsDamaged, BeginsLogChain, HasIncompleteMetaData, IsForceOffline, IsCopyOnly, FirstRecoveryForkID, ForkPointLSN
151+
,RecoveryModel, DifferentialBaseLSN, DifferentialBaseGUID, BackupTypeDescription, BackupSetGUID, CompressedBackupSize'
152+
153+
IF @MajorVersion >= 11
154+
SET @HeadersSQL += CHAR(13) + CHAR(10) + ' ,Containment';
96155

97-
DECLARE @MoveOption AS NVARCHAR(1000)= '';
156+
IF @MajorVersion >= 13 OR (@MajorVersion = 12 AND @BuildVersion >= 2342)
157+
SET @HeadersSQL += ', KeyAlgorithm, EncryptorThumbprint, EncryptorType'
158+
159+
SET @HeadersSQL += ')' + CHAR(13) + CHAR(10);
160+
SET @HeadersSQL += 'EXEC (''RESTORE HEADERONLY FROM DISK=''''{Path}'''''')';
161+
162+
DECLARE @MoveOption AS NVARCHAR(MAX)= '';
98163

99164
IF @MoveFiles = 1
100165
BEGIN
@@ -105,7 +170,7 @@ BEGIN
105170
WHEN Type = 'D' THEN @MoveDataDrive
106171
WHEN Type = 'L' THEN @MoveLogDrive
107172
END+REVERSE(LEFT(REVERSE(PhysicalName), CHARINDEX('\', REVERSE(PhysicalName), 1)-1)) +'''' AS logicalcmds
108-
FROM @FileListParameters)
173+
FROM #FileListParameters)
109174
SELECT @MoveOption = @MoveOption + logicalcmds
110175
FROM Files;
111176
END;
@@ -117,41 +182,23 @@ BEGIN
117182
EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = 'RESTORE DATABASE', @Mode = 1, @DatabaseName = @Database, @LogToTable = 'Y', @Execute = 'Y';
118183

119184
--get the backup completed data so we can apply tlogs from that point forwards
120-
DECLARE @Headers TABLE (
121-
BackupName VARCHAR(256), BackupDescription VARCHAR(256), BackupType VARCHAR(256), ExpirationDate VARCHAR(256),
122-
Compressed VARCHAR(256), Position VARCHAR(256), DeviceType VARCHAR(256), UserName VARCHAR(256), ServerName VARCHAR(
123-
256), DatabaseName VARCHAR(256), DatabaseVersion VARCHAR(256), DatabaseCreationDate VARCHAR(256), BackupSize VARCHAR(
124-
256), FirstLSN VARCHAR(256), LastLSN VARCHAR(256), CheckpointLSN VARCHAR(256), DatabaseBackupLSN VARCHAR(256),
125-
BackupStartDate VARCHAR(256), BackupFinishDate VARCHAR(256), SortOrder VARCHAR(256), CodePage VARCHAR(256),
126-
UnicodeLocaleId VARCHAR(256), UnicodeComparisonStyle VARCHAR(256), CompatibilityLevel VARCHAR(256), SoftwareVendorId
127-
VARCHAR(256), SoftwareVersionMajor VARCHAR(256), SoftwareVersionMinor VARCHAR(256), SoftwareVersionBuild VARCHAR(256),
128-
MachineName VARCHAR(256), Flags VARCHAR(256), BindingID VARCHAR(256), RecoveryForkID VARCHAR(256), Collation VARCHAR(
129-
256), FamilyGUID VARCHAR(256), HasBulkLoggedData VARCHAR(256), IsSnapshot VARCHAR(256), IsReadOnly VARCHAR(256),
130-
IsSingleUser VARCHAR(256), HasBackupChecksums VARCHAR(256), IsDamaged VARCHAR(256), BeginsLogChain VARCHAR(256),
131-
HasIncompleteMetaData VARCHAR(256), IsForceOffline VARCHAR(256), IsCopyOnly VARCHAR(256), FirstRecoveryForkID VARCHAR
132-
(256), ForkPointLSN VARCHAR(256), RecoveryModel VARCHAR(256), DifferentialBaseLSN VARCHAR(256), DifferentialBaseGUID
133-
VARCHAR(256), BackupTypeDescription VARCHAR(256), BackupSetGUID VARCHAR(256), CompressedBackupSize VARCHAR(256),
134-
Containment VARCHAR(256), KeyAlgorithm NVARCHAR(32), EncryptorThumbprint VARBINARY(20), EncryptorType NVARCHAR(32),
135-
--
136-
-- Seq added to retain order by
137-
--
138-
Seq INT NOT NULL IDENTITY(1, 1)
139-
);
140-
141-
INSERT INTO @Headers
142-
EXEC ('RESTORE HEADERONLY FROM DISK = '''+@BackupPathFull + @LastFullBackup+'''');
143-
144-
DECLARE @BackupDateTime AS CHAR(15), @FullLastLSN BIGINT;
185+
186+
SET @sql = REPLACE(@HeadersSQL, '{Path}', @BackupPathFull + @LastFullBackup);
187+
PRINT @sql;
188+
EXECUTE (@sql);
189+
190+
DECLARE @BackupDateTime AS CHAR(15), @FullLastLSN NUMERIC(25, 0);
145191

146192
SELECT @BackupDateTime = RIGHT(@LastFullBackup, 19)
147193

148-
SELECT @FullLastLSN = CAST(LastLSN AS BIGINT) FROM @Headers WHERE BackupType = 1;
194+
SELECT @FullLastLSN = CAST(LastLSN AS NUMERIC(25, 0)) FROM #Headers WHERE BackupType = 1;
195+
149196
END;
150197
ELSE
151198
BEGIN
152-
DECLARE @DatabaseLastLSN BIGINT;
199+
DECLARE @DatabaseLastLSN NUMERIC(25, 0);
153200

154-
SELECT @DatabaseLastLSN = CAST(f.redo_start_lsn AS BIGINT)
201+
SELECT @DatabaseLastLSN = CAST(f.redo_start_lsn AS NUMERIC(25, 0))
155202
FROM master.sys.databases d
156203
JOIN master.sys.master_files f ON d.database_id = f.database_id
157204
WHERE d.name = @RestoreDatabaseName AND f.file_id = 1
@@ -160,7 +207,7 @@ END;
160207
--Clear out table variables for translogs
161208
DELETE FROM @FileList;
162209

163-
SET @cmd = 'DIR /b '+ @BackupPathLog;
210+
SET @cmd = 'DIR /b "'+ @BackupPathLog + '"';
164211
INSERT INTO @FileList (BackupFile)
165212
EXEC master.sys.xp_cmdshell @cmd;
166213

@@ -174,23 +221,24 @@ DECLARE BackupFiles CURSOR FOR
174221

175222
OPEN BackupFiles;
176223

177-
DECLARE @i tinyint = 1, @LogFirstLSN BIGINT, @LogLastLSN BIGINT;;
224+
DECLARE @i tinyint = 1, @LogFirstLSN NUMERIC(25, 0), @LogLastLSN NUMERIC(25, 0);
178225

179226
-- Loop through all the files for the database
180227
FETCH NEXT FROM BackupFiles INTO @BackupFile;
181228
WHILE @@FETCH_STATUS = 0
182229
BEGIN
183230
IF @i = 1
184231
BEGIN
185-
INSERT INTO @Headers
186-
EXEC ('RESTORE HEADERONLY FROM DISK = '''+@BackupPathLog + @BackupFile+'''');
232+
SET @sql = REPLACE(@HeadersSQL, '{Path}', @BackupPathLog + @BackupFile);
233+
PRINT @sql;
234+
EXECUTE (@sql);
187235

188-
SELECT @LogFirstLSN = CAST(FirstLSN AS BIGINT), @LogLastLSN = CAST(LastLSN AS BIGINT) FROM @Headers WHERE BackupType = 2;
236+
SELECT @LogFirstLSN = CAST(FirstLSN AS NUMERIC(25, 0)), @LogLastLSN = CAST(LastLSN AS NUMERIC(25, 0)) FROM #Headers WHERE BackupType = 2;
189237

190238
IF (@ContinueLogs = 0 AND @LogFirstLSN <= @FullLastLSN AND @FullLastLSN <= @LogLastLSN) OR (@ContinueLogs = 1 AND @LogFirstLSN <= @DatabaseLastLSN AND @DatabaseLastLSN < @LogLastLSN)
191239
SET @i = 2;
192240

193-
DELETE FROM @Headers WHERE BackupType = 2;
241+
DELETE FROM #Headers WHERE BackupType = 2;
194242
END;
195243

196244
IF @i = 2

Documentation/sp_BlitzFirst Checks by Priority.md

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,36 @@ If you want to change anything about a check - the priority, finding, URL, or ID
88

99
| Priority | FindingsGroup | Finding | URL | CheckID |
1010
|----------|---------------------------------|---------------------------------------|-------------------------------------------------|----------|
11-
| 1 | Maintenance Tasks Running | Backup Running | http://BrentOzar.com/askbrent/backups | 1 |
12-
| 1 | Maintenance Tasks Running | DBCC CHECK* Running | http://BrentOzar.com/askbrent/dbcc | 2 |
13-
| 1 | Maintenance Tasks Running | Restore Running | http://BrentOzar.com/askbrent/backups | 3 |
14-
| 1 | Outdated sp_BlitzFirst | sp_BlitzFirst is Over 6 Months Old | http://BrentOzar.com/askbrent/ | 27 |
15-
| 1 | Query Problems | Long-Running Query Blocking Others | http://BrentOzar.com/go/blocking | 5 |
16-
| 1 | Query Problems | Query Rolling Back | http://BrentOzar.com/go/rollback | 9 |
17-
| 1 | Query Problems | Sleeping Query with Open Transactions | http://BrentOzar.com/go/sleeping | 8 |
18-
| 1 | SQL Server Internal Maintenance | Data File Growing | http://BrentOzar.com/go/instant | 4 |
19-
| 1 | SQL Server Internal Maintenance | Log File Growing | http://BrentOzar.com/go/logsize | 13 |
20-
| 1 | SQL Server Internal Maintenance | Log File Shrinking | http://BrentOzar.com/go/logsize | 14 |
21-
| 40 | Table Problems | Forwarded Fetches/Sec High | http://BrentOzar.com/go/fetch | 29 |
22-
| 10 | Server Performance | Poison Wait Detected | http://BrentOzar.com/go/poison | 30 |
23-
| 50 | Query Problems | Compilations/Sec High | http://BrentOzar.com/go/compile | 15 |
24-
| 50 | Query Problems | Plan Cache Erased Recently | http://BrentOzar.com/go/freeproccache | 7 |
25-
| 50 | Query Problems | Re-Compilations/Sec High | http://BrentOzar.com/go/recompile | 16 |
26-
| 50 | Server Performance | High CPU Utilization | http://BrentOzar.com/go/cpu | 24 |
27-
| 50 | Server Performance | High CPU Utilization - Non SQL Processes | http://BrentOzar.com/go/cpu | 28 |
28-
| 50 | Server Performance | Page Life Expectancy Low | http://BrentOzar.com/go/ple | 10 |
29-
| 50 | Server Performance | Slow Data File Reads | http://BrentOzar.com/go/slow | 11 |
30-
| 50 | Server Performance | Slow Log File Writes | http://BrentOzar.com/go/slow | 12 |
31-
| 200 | Wait Stats | (One per wait type) | http://BrentOzar.com/sql/wait-stats/#(waittype) | 6 |
32-
| 210 | Query Stats | Plan Cache Analysis Skipped | http://BrentOzar.com/go/topqueries | 18 |
33-
| 210 | Query Stats | Top Resource-Intensive Queries | http://BrentOzar.com/go/topqueries | 17 |
34-
| 250 | Server Info | Batch Requests per Second | http://BrentOzar.com/go/measure | 19 |
35-
| 250 | Server Info | Re-Compiles per Second | http://BrentOzar.com/go/measure | 26 |
36-
| 250 | Server Info | SQL Compilations/sec | http://BrentOzar.com/go/measure | 25 |
37-
| 250 | Server Info | Wait Time per Core per Second | http://BrentOzar.com/go/measure | 20 |
11+
| 1 | Maintenance Tasks Running | Backup Running | https://BrentOzar.com/askbrent/backups | 1 |
12+
| 1 | Maintenance Tasks Running | DBCC CHECK* Running | https://BrentOzar.com/askbrent/dbcc | 2 |
13+
| 1 | Maintenance Tasks Running | Restore Running | https://BrentOzar.com/askbrent/backups | 3 |
14+
| 1 | Outdated sp_BlitzFirst | sp_BlitzFirst is Over 6 Months Old | https://BrentOzar.com/askbrent/ | 27 |
15+
| 1 | Query Problems | Long-Running Query Blocking Others | https://BrentOzar.com/go/blocking | 5 |
16+
| 1 | Query Problems | Query Rolling Back | https://BrentOzar.com/go/rollback | 9 |
17+
| 1 | Query Problems | Sleeping Query with Open Transactions | https://BrentOzar.com/go/sleeping | 8 |
18+
| 1 | SQL Server Internal Maintenance | Data File Growing | https://BrentOzar.com/go/instant | 4 |
19+
| 1 | SQL Server Internal Maintenance | Log File Growing | https://BrentOzar.com/go/logsize | 13 |
20+
| 1 | SQL Server Internal Maintenance | Log File Shrinking | https://BrentOzar.com/go/logsize | 14 |
21+
| 10 | Server Performance | Poison Wait Detected | https://BrentOzar.com/go/poison | 30 |
22+
| 40 | Table Problems | Forwarded Fetches/Sec High | https://BrentOzar.com/go/fetch | 29 |
23+
| 50 | In-Memory OLTP | Garbage Collection in Progress | https://BrentOzar.com/go/garbage | 31 |
24+
| 50 | Query Problems | Compilations/Sec High | https://BrentOzar.com/go/compile | 15 |
25+
| 50 | Query Problems | Plan Cache Erased Recently | https://BrentOzar.com/go/freeproccache | 7 |
26+
| 50 | Query Problems | Re-Compilations/Sec High | https://BrentOzar.com/go/recompile | 16 |
27+
| 50 | Server Performance | High CPU Utilization | https://BrentOzar.com/go/cpu | 24 |
28+
| 50 | Server Performance | High CPU Utilization - Non SQL Processes | https://BrentOzar.com/go/cpu | 28 |
29+
| 50 | Server Performance | Page Life Expectancy Low | https://BrentOzar.com/go/ple | 10 |
30+
| 50 | Server Performance | Slow Data File Reads | https://BrentOzar.com/go/slow | 11 |
31+
| 50 | Server Performance | Slow Log File Writes | https://BrentOzar.com/go/slow | 12 |
32+
| 100 | In-Memory OLTP | Transactions aborted | https://BrentOzar.com/go/aborted | 32 |
33+
| 100 | Query Problems | Suboptimal Plans/Sec High | https://BrentOzar.com/go/suboptimal | 33 |
34+
| 200 | Wait Stats | (One per wait type) | https://BrentOzar.com/sql/wait-stats/#(waittype) | 6 |
35+
| 210 | Query Stats | Plan Cache Analysis Skipped | https://BrentOzar.com/go/topqueries | 18 |
36+
| 210 | Query Stats | Top Resource-Intensive Queries | https://BrentOzar.com/go/topqueries | 17 |
37+
| 250 | Server Info | Batch Requests per Second | https://BrentOzar.com/go/measure | 19 |
38+
| 250 | Server Info | Re-Compiles per Second | https://BrentOzar.com/go/measure | 26 |
39+
| 250 | Server Info | SQL Compilations/sec | https://BrentOzar.com/go/measure | 25 |
40+
| 250 | Server Info | Wait Time per Core per Second | https://BrentOzar.com/go/measure | 20 |
3841
| 251 | Server Info | CPU Utilization | | 23 |
3942
| 251 | Server Info | Database Count | | 22 |
4043
| 251 | Server Info | Database Size, Total GB | | 21 |

sp_Blitz.sql

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ AS
3131
SET NOCOUNT ON;
3232
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
3333
DECLARE @Version VARCHAR(30);
34-
SET @Version = '5.0';
35-
SET @VersionDate = '20170307';
34+
SET @Version = '5.2';
35+
SET @VersionDate = '20170406';
3636
SET @OutputType = UPPER(@OutputType);
3737

3838
IF @Help = 1 PRINT '
@@ -571,7 +571,7 @@ AS
571571
/* Get the major and minor build numbers */
572572
SET @ProductVersion = CAST(SERVERPROPERTY('ProductVersion') AS NVARCHAR(128));
573573
SELECT @ProductVersionMajor = SUBSTRING(@ProductVersion, 1,CHARINDEX('.', @ProductVersion) + 1 ),
574-
@ProductVersionMinor = PARSENAME(CONVERT(varchar(32), @ProductVersion), 2)
574+
@ProductVersionMinor = PARSENAME(CONVERT(varchar(32), @ProductVersion), 2);
575575

576576
/*
577577
Whew! we're finally done with the setup, and we can start doing checks.
@@ -2128,6 +2128,7 @@ AS
21282128
IF ( SELECT COUNT (distinct [size])
21292129
FROM tempdb.sys.database_files
21302130
WHERE type_desc = 'ROWS'
2131+
HAVING MAX((size * 8) / (1024. * 1024)) - MIN((size * 8) / (1024. * 1024)) > 1.
21312132
) <> 1
21322133
BEGIN
21332134
INSERT INTO #BlitzResults
@@ -3443,6 +3444,7 @@ IF @ProductVersionMajor >= 10
34433444

34443445
/*This counts memory dumps and gives min and max date of in view*/
34453446
IF @ProductVersionMajor >= 10
3447+
AND NOT (@ProductVersionMajor = 10.5 AND @ProductVersionMinor < 4297) /* Skip due to crash bug: https://support.microsoft.com/en-us/help/2908087 */
34463448
AND NOT EXISTS ( SELECT 1
34473449
FROM #SkipChecks
34483450
WHERE DatabaseName IS NULL AND CheckID = 171 )

0 commit comments

Comments
 (0)