@@ -108,7 +108,7 @@ IF @WriteBackupsLastHours > 0
108108
109109SELECT @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
113113SET @ProductVersion = CAST (SERVERPROPERTY (' ProductVersion' ) AS NVARCHAR (128 ));
114114SELECT @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'
754754BEGIN
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;
11371137DECLARE @msg NVARCHAR (4000 ) = N ' ' ;
11381138DECLARE @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
11491141IF @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