Skip to content

Commit 5ecfc47

Browse files
authored
Merge pull request #910 from BrentOzarULTD/sp_BlitzBackups_Review
Sp blitzbackups review
2 parents 8687a12 + 7593547 commit 5ecfc47

File tree

1 file changed

+29
-57
lines changed

1 file changed

+29
-57
lines changed

sp_BlitzBackups.sql

Lines changed: 29 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ IF @WriteBackupsLastHours > 0
108108

109109
SELECT @crlf = NCHAR(13) + NCHAR(10),
110110
@StartTime = DATEADD(hh, @HoursBack, GETDATE()),
111-
@MoreInfoHeader = '<?ClickToSeeDetails -- ' + @crlf, @MoreInfoFooter = @crlf + ' -- ?>';
111+
@MoreInfoHeader = N'<?ClickToSeeDetails -- ' + @crlf, @MoreInfoFooter = @crlf + N' -- ?>';
112112

113113
SET @ProductVersion = CAST(SERVERPROPERTY('ProductVersion') AS NVARCHAR(128));
114114
SELECT @ProductVersionMajor = SUBSTRING(@ProductVersion, 1, CHARINDEX('.', @ProductVersion) + 1),
@@ -713,7 +713,7 @@ RAISERROR('Gathering RTO worst cases', 0, 1) WITH NOWAIT;
713713
/*Find max and avg diff and log sizes*/
714714
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
715715

716-
SET @StringToExecute += '
716+
SET @StringToExecute += N'
717717
UPDATE r
718718
SET r.AvgFullSize = fulls.avg_full_size,
719719
r.AvgDiffSize = diffs.avg_diff_size,
@@ -750,7 +750,7 @@ RAISERROR('Gathering RTO worst cases', 0, 1) WITH NOWAIT;
750750
EXEC sys.sp_executesql @StringToExecute;
751751

752752
/*Trending - only works if backupfile is populated, which means in msdb */
753-
IF @MSDBName = 'msdb'
753+
IF @MSDBName = N'msdb'
754754
BEGIN
755755
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' --+ @crlf;
756756

@@ -975,7 +975,7 @@ RAISERROR('Rules analysis starting', 0, 1) WITH NOWAIT;
975975

976976
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
977977

978-
SET @StringToExecute += 'SELECT
978+
SET @StringToExecute += N'SELECT
979979
8 AS CheckId,
980980
100 AS [Priority],
981981
b.database_name AS [Database Name],
@@ -1027,7 +1027,7 @@ IF @ProductVersionMajor >= 12
10271027

10281028
SET @StringToExecute =N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
10291029

1030-
SET @StringToExecute += 'SELECT
1030+
SET @StringToExecute += N'SELECT
10311031
10 AS CheckId,
10321032
100 AS [Priority],
10331033
b.database_name AS [Database Name],
@@ -1047,7 +1047,7 @@ IF @ProductVersionMajor >= 12
10471047

10481048
SET @StringToExecute =N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
10491049

1050-
SET @StringToExecute += 'SELECT
1050+
SET @StringToExecute += N'SELECT
10511051
11 AS CheckId,
10521052
100 AS [Priority],
10531053
b.database_name AS [Database Name],
@@ -1068,7 +1068,7 @@ IF @ProductVersionMajor >= 12
10681068

10691069
SET @StringToExecute =N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
10701070

1071-
SET @StringToExecute += 'SELECT
1071+
SET @StringToExecute += N'SELECT
10721072
12 AS CheckId,
10731073
100 AS [Priority],
10741074
b.database_name AS [Database Name],
@@ -1137,14 +1137,6 @@ RAISERROR('Pushing backup history to listener', 0, 1) WITH NOWAIT;
11371137
DECLARE @msg NVARCHAR(4000) = N'';
11381138
DECLARE @RemoteCheck TABLE (c INT NULL);
11391139

1140-
/*
1141-
@AGName NVARCHAR(256) NULL,
1142-
@WriteBackupsToDatabaseName NVARCHAR(256) = 'msdb',
1143-
@WriteBackupsToListenerName NVARCHAR(256),
1144-
@WriteBackupsToDatabaseName NVARCHAR(256),
1145-
@WriteBackupsLastHours INT = 24,
1146-
@WriteBackupsBatchSize INT = 5000,
1147-
*/
11481140

11491141
IF @WriteBackupsToDatabaseName IS NULL
11501142
BEGIN
@@ -1193,8 +1185,8 @@ END
11931185

11941186
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
11951187

1196-
SET @StringToExecute += 'SELECT TOP 1 1 FROM '
1197-
+ QUOTENAME(@WriteBackupsToListenerName) + '.master.sys.databases d WHERE d.name = @i_WriteBackupsToDatabaseName;'
1188+
SET @StringToExecute += N'SELECT TOP 1 1 FROM '
1189+
+ QUOTENAME(@WriteBackupsToListenerName) + N'.master.sys.databases d WHERE d.name = @i_WriteBackupsToDatabaseName;'
11981190

11991191
IF @Debug = 1
12001192
PRINT @StringToExecute;
@@ -1212,7 +1204,7 @@ END
12121204

12131205
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
12141206

1215-
SET @StringToExecute += 'SELECT TOP 1 1 FROM '
1207+
SET @StringToExecute += N'SELECT TOP 1 1 FROM '
12161208
+ QUOTENAME(@WriteBackupsToListenerName) + '.' + QUOTENAME(@WriteBackupsToDatabaseName) + '.sys.tables WHERE name = ''backupset'' AND SCHEMA_NAME(schema_id) = ''dbo'';
12171209
' + @crlf;
12181210

@@ -1231,10 +1223,19 @@ END
12311223

12321224
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
12331225

1234-
SET @StringToExecute += N'SELECT TOP 1 *
1235-
INTO ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.dbo.backupset
1236-
FROM ' + N'msdb.dbo.backupset
1237-
WHERE 1 = 2
1226+
SET @StringToExecute += N'CREATE TABLE ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.dbo.backupset
1227+
( backup_set_id INT IDENTITY(1, 1), backup_set_uuid UNIQUEIDENTIFIER, media_set_id INT, first_family_number TINYINT, first_media_number SMALLINT,
1228+
last_family_number TINYINT, last_media_number SMALLINT, catalog_family_number TINYINT, catalog_media_number SMALLINT, position INT, expiration_date DATETIME,
1229+
software_vendor_id INT, name NVARCHAR(128), description NVARCHAR(255), user_name NVARCHAR(128), software_major_version TINYINT, software_minor_version TINYINT,
1230+
software_build_version SMALLINT, time_zone SMALLINT, mtf_minor_version TINYINT, first_lsn NUMERIC(25, 0), last_lsn NUMERIC(25, 0), checkpoint_lsn NUMERIC(25, 0),
1231+
database_backup_lsn NUMERIC(25, 0), database_creation_date DATETIME, backup_start_date DATETIME, backup_finish_date DATETIME, type CHAR(1), sort_order SMALLINT,
1232+
code_page SMALLINT, compatibility_level TINYINT, database_version INT, backup_size NUMERIC(20, 0), database_name NVARCHAR(128), server_name NVARCHAR(128),
1233+
machine_name NVARCHAR(128), flags INT, unicode_locale INT, unicode_compare_style INT, collation_name NVARCHAR(128), is_password_protected BIT, recovery_model NVARCHAR(60),
1234+
has_bulk_logged_data BIT, is_snapshot BIT, is_readonly BIT, is_single_user BIT, has_backup_checksums BIT, is_damaged BIT, begins_log_chain BIT, has_incomplete_metadata BIT,
1235+
is_force_offline BIT, is_copy_only BIT, first_recovery_fork_guid UNIQUEIDENTIFIER, last_recovery_fork_guid UNIQUEIDENTIFIER, fork_point_lsn NUMERIC(25, 0), database_guid UNIQUEIDENTIFIER,
1236+
family_guid UNIQUEIDENTIFIER, differential_base_lsn NUMERIC(25, 0), differential_base_guid UNIQUEIDENTIFIER, compressed_backup_size NUMERIC(20, 0), key_algorithm NVARCHAR(32),
1237+
encryptor_thumbprint VARBINARY(20) , encryptor_type NVARCHAR(32)
1238+
);
12381239
' + @crlf;
12391240

12401241
SET @InnerStringToExecute = N'EXEC( ''' + @StringToExecute + ''' ) AT ' + QUOTENAME(@WriteBackupsToListenerName) + N';'
@@ -1244,43 +1245,14 @@ END
12441245

12451246
EXEC sp_executesql @InnerStringToExecute
12461247

1247-
/*We need to add the encryptor column if it doesn't exist, in case someone wants to push data from a 2014 instance to a 2012 repo.*/
1248-
1249-
1250-
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
1251-
1252-
SET @StringToExecute += '
1253-
1254-
IF NOT EXISTS (
1255-
SELECT 1
1256-
FROM ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.sys.column AS c
1257-
WHERE OBJECT_NAME(c.object_id) = ?
1258-
AND c.name = ?
1259-
)
1260-
1261-
BEGIN
1262-
1263-
ALTER TABLE ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.[dbo].[backupset] ADD [encryptor_type] NVARCHAR(32)
1264-
1265-
END
1266-
'
1267-
1268-
SET @InnerStringToExecute = N'EXEC( ''' + @StringToExecute + ''', ''backupset'', ''encryptor_type'' ) AT ' + QUOTENAME(@WriteBackupsToListenerName) + N';'
1269-
1270-
IF @Debug = 1
1271-
PRINT @InnerStringToExecute;
1272-
1273-
EXEC sp_executesql @InnerStringToExecute
1274-
1275-
12761248

12771249
RAISERROR('We''ll even make the indexes!', 0, 1) WITH NOWAIT
12781250

12791251
/*Checking for and creating the PK/CX*/
12801252

12811253
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
12821254

1283-
SET @StringToExecute += '
1255+
SET @StringToExecute += N'
12841256
12851257
IF NOT EXISTS (
12861258
SELECT t.name, i.name
@@ -1309,7 +1281,7 @@ END
13091281

13101282
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
13111283

1312-
SET @StringToExecute += 'IF NOT EXISTS (
1284+
SET @StringToExecute += N'IF NOT EXISTS (
13131285
SELECT t.name, i.name
13141286
FROM ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.sys.tables AS t
13151287
JOIN ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.sys.indexes AS i
@@ -1363,7 +1335,7 @@ END
13631335

13641336
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
13651337

1366-
SET @StringToExecute += 'IF NOT EXISTS (
1338+
SET @StringToExecute += N'IF NOT EXISTS (
13671339
SELECT t.name, i.name
13681340
FROM ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.sys.tables AS t
13691341
JOIN ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.sys.indexes AS i
@@ -1390,7 +1362,7 @@ END
13901362

13911363
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
13921364

1393-
SET @StringToExecute += 'IF NOT EXISTS (
1365+
SET @StringToExecute += N'IF NOT EXISTS (
13941366
SELECT t.name, i.name
13951367
FROM ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.sys.tables AS t
13961368
JOIN ' + QUOTENAME(@WriteBackupsToDatabaseName) + N'.sys.indexes AS i
@@ -1488,8 +1460,8 @@ END
14881460
SELECT database_name, database_guid, backup_set_uuid, type, backup_size, backup_start_date, backup_finish_date, media_set_id,
14891461
compressed_backup_size, recovery_model, server_name, machine_name, first_lsn, last_lsn, user_name, compatibility_level,
14901462
is_password_protected, is_snapshot, is_readonly, is_single_user, has_backup_checksums, is_damaged, ' + CASE WHEN @ProductVersionMajor >= 12
1491-
THEN + N'encryptor_type, has_bulk_logged_data)' + @crlf
1492-
ELSE + N', has_bulk_logged_data)' + @crlf
1463+
THEN + N'encryptor_type, has_bulk_logged_data' + @crlf
1464+
ELSE + N', has_bulk_logged_data' + @crlf
14931465
END
14941466
SET @StringToExecute +=N'
14951467
FROM msdb.dbo.backupset b

0 commit comments

Comments
 (0)