@@ -19,24 +19,24 @@ sp_sizeoptimiser - Recommends space saving measures for data footprints.
1919
2020Part of the DBA MultiTool http://dba-multitool.org
2121
22- Version: 20201110
22+ Version: 20210622
2323
2424MIT License
2525
2626Copyright (c) 2020 John McCall
2727
28- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
29- documentation files (the "Software"), to deal in the Software without restriction, including without limitation
30- the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
28+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
29+ documentation files (the "Software"), to deal in the Software without restriction, including without limitation
30+ the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
3131and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
3232
33- The above copyright notice and this permission notice shall be included in all copies or substantial
33+ The above copyright notice and this permission notice shall be included in all copies or substantial
3434portions of the Software.
3535
36- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
37- TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
38- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
39- CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
36+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
37+ TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
38+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
39+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
4040DEALINGS IN THE SOFTWARE.
4141
4242=========
@@ -48,7 +48,7 @@ Example:
4848 INSERT INTO @include ([database_name])
4949 VALUES (N'WideWorldImporters');
5050
51- EXEC [dbo].[sp_sizeoptimiser] @IncludeDatabases = @include
51+ EXEC [dbo].[sp_sizeoptimiser] @IncludeDatabases = @include
5252*/
5353
5454BEGIN
@@ -130,8 +130,8 @@ BEGIN
130130 INSERT INTO #Databases
131131 SELECT [sd].[name]
132132 FROM [sys].[databases] AS [sd]
133- WHERE NOT EXISTS (SELECT [d].[database_name]
134- FROM @IncludeDatabases AS [d]
133+ WHERE NOT EXISTS (SELECT [d].[database_name]
134+ FROM @IncludeDatabases AS [d]
135135 WHERE [sd].[name] COLLATE database_default = REPLACE(REPLACE([d].[database_name], '[', ''), ']', ''))
136136 AND DATABASEPROPERTYEX([sd].[name], 'UPDATEABILITY') = N'READ_WRITE'
137137 AND DATABASEPROPERTYEX([sd].[name], 'USERACCESS') = N'MULTI_USER'
@@ -183,7 +183,7 @@ BEGIN
183183 BEGIN;
184184 SET @HasPersistedSamplePercent = 1;
185185 END;
186-
186+
187187 IF (@Verbose = 1)
188188 BEGIN;
189189 /* Print info */
@@ -271,7 +271,7 @@ BEGIN
271271 END;
272272 BEGIN;
273273 SET @CheckSQL = N'';
274- SELECT @CheckSQL = @CheckSQL +
274+ SELECT @CheckSQL = @CheckSQL +
275275 N'USE ' + QUOTENAME([database_name]) + N';
276276 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
277277 SELECT @CheckNumber
@@ -304,7 +304,7 @@ BEGIN
304304 END;
305305 BEGIN;
306306 SET @CheckSQL = N'';
307- SELECT @CheckSQL = @CheckSQL +
307+ SELECT @CheckSQL = @CheckSQL +
308308 N'USE ' + QUOTENAME([database_name]) + N'; WITH archaic AS (
309309 SELECT QUOTENAME(SCHEMA_NAME(t.schema_id)) + ''.'' + QUOTENAME(t.name) AS [obj_name]
310310 ,QUOTENAME(c.name) AS [col_name]
@@ -353,7 +353,7 @@ BEGIN
353353 END;
354354 BEGIN;
355355 SET @CheckSQL = N'';
356- SELECT @CheckSQL = @CheckSQL +
356+ SELECT @CheckSQL = @CheckSQL +
357357 N'USE ' + QUOTENAME([database_name]) + ';
358358 WITH UnspecifiedVarChar AS (
359359 SELECT QUOTENAME(SCHEMA_NAME(t.schema_id)) + ''.'' + QUOTENAME(t.name) AS [obj_name]
@@ -391,7 +391,7 @@ BEGIN
391391 END;
392392 BEGIN;
393393 SET @CheckSQL = N'';
394- SELECT @CheckSQL = @CheckSQL +
394+ SELECT @CheckSQL = @CheckSQL +
395395 N'USE ' + QUOTENAME([database_name]) + N';
396396 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
397397 SELECT @CheckNumber
@@ -423,7 +423,7 @@ BEGIN
423423 IF (@IsExpress = 1)
424424 BEGIN;
425425 SET @CheckSQL = N'';
426- SELECT @CheckSQL = @CheckSQL +
426+ SELECT @CheckSQL = @CheckSQL +
427427 N'USE ' + QUOTENAME([database_name]) + N';
428428 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
429429 SELECT @CheckNumber
@@ -457,7 +457,7 @@ BEGIN
457457 END;
458458 BEGIN;
459459 SET @CheckSQL = N'';
460- SELECT @CheckSQL = @CheckSQL +
460+ SELECT @CheckSQL = @CheckSQL +
461461 N'USE ' + QUOTENAME([database_name]) + N';
462462 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
463463 SELECT @CheckNumber
@@ -486,7 +486,7 @@ BEGIN
486486 END;
487487 BEGIN;
488488 SET @CheckSQL = N'';
489- SELECT @CheckSQL = @CheckSQL +
489+ SELECT @CheckSQL = @CheckSQL +
490490 N'USE ' + QUOTENAME([database_name]) + N';
491491 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
492492 SELECT @CheckNumber
@@ -517,7 +517,7 @@ BEGIN
517517 IF (@IsExpress = 1)
518518 BEGIN;
519519 SET @CheckSQL = N'';
520- SELECT @CheckSQL = @CheckSQL +
520+ SELECT @CheckSQL = @CheckSQL +
521521 N'USE ' + QUOTENAME([database_name]) + N';
522522 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
523523 SELECT @CheckNumber
@@ -552,7 +552,7 @@ BEGIN
552552 END;
553553 BEGIN;
554554 SET @CheckSQL = N'';
555- SELECT @CheckSQL = @CheckSQL +
555+ SELECT @CheckSQL = @CheckSQL +
556556 N'USE ' + QUOTENAME([database_name]) + N';
557557 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
558558 SELECT @CheckNumber
@@ -584,7 +584,7 @@ BEGIN
584584 END;
585585 BEGIN;
586586 SET @CheckSQL = N'';
587- SELECT @CheckSQL = @CheckSQL +
587+ SELECT @CheckSQL = @CheckSQL +
588588 N'USE ' + QUOTENAME([database_name]) + N';
589589 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
590590 SELECT @CheckNumber
@@ -617,7 +617,7 @@ BEGIN
617617 IF (@IsExpress = 1)
618618 BEGIN;
619619 SET @CheckSQL = N'';
620- SELECT @CheckSQL = @CheckSQL +
620+ SELECT @CheckSQL = @CheckSQL +
621621 N'USE ' + QUOTENAME([database_name]) + N';
622622 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
623623 SELECT @CheckNumber
@@ -626,7 +626,7 @@ BEGIN
626626 ,QUOTENAME(DB_NAME())
627627 ,QUOTENAME(DB_NAME(database_id))
628628 ,NULL
629- ,N''Database file '' + name + '' has a maximum growth set to '' +
629+ ,N''Database file '' + name + '' has a maximum growth set to '' +
630630 CASE
631631 WHEN max_size = -1
632632 THEN ''Unlimited''
@@ -685,7 +685,7 @@ BEGIN
685685 IF(@IsExpress = 1)
686686 BEGIN;
687687 SET @CheckSQL = N'';
688- SELECT @CheckSQL = @CheckSQL +
688+ SELECT @CheckSQL = @CheckSQL +
689689 N'USE ' + QUOTENAME([database_name]) + N';
690690 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
691691 SELECT @CheckNumber
@@ -717,7 +717,7 @@ BEGIN
717717 END;
718718 BEGIN;
719719 SET @CheckSQL = N'';
720- SELECT @CheckSQL = @CheckSQL +
720+ SELECT @CheckSQL = @CheckSQL +
721721 N'USE ' + QUOTENAME([database_name]) + N';
722722 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
723723 SELECT @CheckNumber
@@ -750,7 +750,7 @@ BEGIN
750750 END;
751751 BEGIN;
752752 SET @CheckSQL = N'';
753- SELECT @CheckSQL = @CheckSQL +
753+ SELECT @CheckSQL = @CheckSQL +
754754 N' USE ? ;
755755 BEGIN
756756 IF OBJECT_ID(''tempdb..#Indexes'') IS NOT NULL
@@ -1067,9 +1067,9 @@ BEGIN
10671067 WHERE [sc].[stats_column_id] = 1
10681068 AND [s].[has_filter] = 0
10691069 AND [s].[no_recompute] = 0
1070- AND [ac].[is_nullable] = 1
1070+ AND [ac].[is_nullable] = 1
10711071 AND NOT EXISTS (SELECT 1 -- Compressed tables not compatible with sparse cols
1072- FROM [sys].[partitions] AS [p]
1072+ FROM [sys].[partitions] AS [p]
10731073 WHERE [p].[object_id] = [i].[object_id]
10741074 AND [p].[data_compression] > 0) ';
10751075 IF @HasTempStat = 1
@@ -1176,7 +1176,7 @@ BEGIN
11761176 END;
11771177 BEGIN
11781178 SET @CheckSQL = N'';
1179- SELECT @CheckSQL = @CheckSQL +
1179+ SELECT @CheckSQL = @CheckSQL +
11801180 N'USE ' + QUOTENAME([database_name]) + N';
11811181 INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
11821182 SELECT @CheckNumber
@@ -1217,12 +1217,12 @@ BEGIN
12171217 DECLARE @ErrorState INT = ERROR_STATE();
12181218
12191219 RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState) WITH NOWAIT;
1220- SET @msg = CONCAT('Actual error number: ', @ErrorNumber);
1221- RAISERROR(@msg , 16, 1);
1222- SET @msg = CONCAT('Actual line number: ', @ErrorLine);
1223- RAISERROR(@msg , 16, 1);
1224- SET @msg = CONCAT('Check number: ', @CheckNumber);
1225- RAISERROR(@msg , 16, 1);
1220+ SET @Msg = CONCAT('Actual error number: ', @ErrorNumber);
1221+ RAISERROR(@Msg , 16, 1);
1222+ SET @Msg = CONCAT('Actual line number: ', @ErrorLine);
1223+ RAISERROR(@Msg , 16, 1);
1224+ SET @Msg = CONCAT('Check number: ', @CheckNumber);
1225+ RAISERROR(@Msg , 16, 1);
12261226 END;
12271227 END CATCH;
12281228END;
0 commit comments