Skip to content

Commit 7b957a8

Browse files
committed
make sp_sizeoptimiser Azure SQL compatible
1 parent 03f1438 commit 7b957a8

File tree

2 files changed

+38
-26
lines changed

2 files changed

+38
-26
lines changed

sp_sizeoptimiser.sql

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ BEGIN
9595
DECLARE @HasTempStat BIT = 0
9696
,@HasPersistedSamplePercent BIT = 0
9797
,@CheckNumber TINYINT = 0
98+
,@EngineEdition TINYINT
9899
,@LastUpdated NVARCHAR(20) = '2020-08-04'
99100
,@CheckSQL NVARCHAR(MAX) = N''
100101
,@Msg NVARCHAR(MAX) = N''
@@ -176,7 +177,7 @@ BEGIN
176177
END
177178

178179
/* Find edition */
179-
IF (@IsExpress IS NULL AND CAST(SERVERPROPERTY('EDITION') AS VARCHAR(50)) LIKE 'Express%')
180+
IF (@IsExpress IS NULL AND CAST(SERVERPROPERTY('Edition') AS VARCHAR(50)) LIKE 'Express%')
180181
BEGIN
181182
SET @IsExpress = 1;
182183
END;
@@ -185,6 +186,12 @@ BEGIN
185186
SET @IsExpress = 0;
186187
END;
187188

189+
/* Find engine edition */
190+
IF (@EngineEdition IS NULL)
191+
BEGIN
192+
SET @EngineEdition = CAST(SERVERPROPERTY('EditionEdition') AS TINYINT);
193+
END;
194+
188195
/* Find Version */
189196
IF (@SqlMajorVersion IS NULL)
190197
BEGIN;
@@ -673,20 +680,23 @@ BEGIN
673680
RAISERROR(@Msg, 10, 1) WITH NOWAIT;
674681
END;
675682
BEGIN;
676-
INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
677-
SELECT @CheckNumber
678-
,N'File Growth'
679-
,N'DATABASE'
680-
,QUOTENAME(DB_NAME([sd].[database_id]))
681-
,[mf].[name]
682-
,NULL
683-
,N'Database file '+[mf].[name]+' has growth set to % instead of a fixed amount. This may grow quickly.'
684-
,N'http://expresssql.lowlydba.com/sp_sizeoptimiser.html#database-growth-type'
685-
FROM [sys].[master_files] AS [mf]
686-
INNER JOIN [sys].[databases] AS [sd] ON [sd].[database_id] = [mf].[database_id]
687-
INNER JOIN #Databases AS [d] ON [d].[database_name] = [sd].[name]
688-
WHERE [mf].[is_percent_growth] = 1
689-
AND [mf].[data_space_id] = 1; --ignore log files
683+
IF (@EngineEdition <> 5) --Azure SQL
684+
BEGIN
685+
INSERT INTO #results ([check_num], [check_type], [obj_type], [db_name], [obj_name], [col_name], [message], [ref_link])
686+
SELECT @CheckNumber
687+
,N'File Growth'
688+
,N'DATABASE'
689+
,QUOTENAME(DB_NAME([sd].[database_id]))
690+
,[mf].[name]
691+
,NULL
692+
,N'Database file '+[mf].[name]+' has growth set to % instead of a fixed amount. This may grow quickly.'
693+
,N'http://expresssql.lowlydba.com/sp_sizeoptimiser.html#database-growth-type'
694+
FROM [sys].[master_files] AS [mf]
695+
INNER JOIN [sys].[databases] AS [sd] ON [sd].[database_id] = [mf].[database_id]
696+
INNER JOIN #Databases AS [d] ON [d].[database_name] = [sd].[name]
697+
WHERE [mf].[is_percent_growth] = 1
698+
AND [mf].[data_space_id] = 1; --ignore log files
699+
END;
690700
END; -- User DB or model db growth set to % Check
691701

692702
/* Default fill factor (EXPRESS ONLY)*/

tests/build/sp_sizeoptimiser_tests.sql

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,10 @@ BEGIN;
115115

116116
--Build
117117
DECLARE @version TINYINT = 10;
118-
DECLARE @IncludeDatabases [dbo].[SizeOptimiserTableType];
119-
120-
INSERT INTO @IncludeDatabases
121-
VALUES ('master');
122118

123119
--Assert
124120
EXEC [tSQLt].[ExpectException] @ExpectedMessage = N'SQL Server versions below 2012 are not supported, sorry!', @ExpectedSeverity = 16, @ExpectedState = 1, @ExpectedErrorNumber = 50000
125-
EXEC [dbo].[sp_sizeoptimiser] @IncludeDatabases = @IncludeDatabases, @SqlMajorVersion = @version, @Verbose = 0;
121+
EXEC [dbo].[sp_sizeoptimiser] @SqlMajorVersion = @version, @Verbose = 0;
126122

127123
END;
128124
GO
@@ -157,9 +153,10 @@ BEGIN;
157153
--Build
158154
DECLARE @version TINYINT = 13;
159155
DECLARE @IncludeDatabases [dbo].[SizeOptimiserTableType];
156+
DECLARE @DbName SYSNAME = DB_NAME(DB_ID());
160157

161158
INSERT INTO @IncludeDatabases
162-
VALUES ('master');
159+
VALUES (@DbName);
163160

164161
--Assert
165162
EXEC [tSQLt].[ExpectNoException]
@@ -219,13 +216,18 @@ CREATE PROCEDURE [sp_sizeoptimiser].[test sp succeeds in Express Mode]
219216
AS
220217
BEGIN;
221218

222-
--Build
223-
DECLARE @IsExpress BIT = 1;
219+
--Check if testing on Azure SQL
220+
DECLARE @EngineEdition TINYINT = CAST(ServerProperty('EngineEdition') AS TINYINT);
224221

225-
--Assert
226-
EXEC [tSQLt].[ExpectNoException]
227-
EXEC [dbo].[sp_sizeoptimiser] @IsExpress = @IsExpress, @Verbose = 0;
222+
IF (@EngineEdition <> 5) -- Not Azure SQL
223+
BEGIN
224+
--Build
225+
DECLARE @IsExpress BIT = 1;
228226

227+
--Assert
228+
EXEC [tSQLt].[ExpectNoException]
229+
EXEC [dbo].[sp_sizeoptimiser] @IsExpress = @IsExpress, @Verbose = 0;
230+
END;
229231
END;
230232
GO
231233

0 commit comments

Comments
 (0)