Skip to content

Commit 002b268

Browse files
authored
Merge pull request #3895 from BrentOzarULTD/20260407_release_prep
20260407 release prep
2 parents 6b46af9 + 03a6e90 commit 002b268

14 files changed

Lines changed: 166 additions & 64 deletions

Documentation/Development/Build Installation Scripts.ps1

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ $Details
8080
Write-Host "`n=== Step 1: Determine version ===" -ForegroundColor Cyan
8181

8282
$sampleFile = Get-ChildItem -Path $RepoRoot -Filter "sp_Blitz.sql" | Select-Object -First 1
83-
$sampleContent = Get-Content $sampleFile.FullName -Raw
83+
$sampleContent = Get-Content $sampleFile.FullName -Raw -Encoding UTF8
8484

8585
if ($sampleContent -match "SELECT\s+@Version\s*=\s*'([^']+)',\s*@VersionDate\s*=\s*'([^']+)'") {
8686
$currentVersion = $Matches[1]
@@ -141,10 +141,10 @@ $InstallAzurePath = Join-Path $RepoRoot "Install-Azure.sql"
141141
# All sp_Blitz*.sql except sp_Blitz.sql, sp_BlitzBackups.sql, sp_DatabaseRestore.sql, sp_BlitzFirst.sql
142142
$azureContent = Get-ChildItem -Path $RepoRoot -Filter "sp_Blitz*.sql" |
143143
Where-Object { $_.Name -ne "sp_Blitz.sql" -and $_.Name -notlike "*BlitzBackups*" -and $_.Name -notlike "*DatabaseRestore*" -and $_.Name -notlike "*BlitzFirst*" } |
144-
ForEach-Object { Get-Content $_.FullName -Raw }
144+
ForEach-Object { Get-Content $_.FullName -Raw -Encoding UTF8 }
145145

146146
if (Test-Path $BlitzFirstPath) {
147-
$azureContent += Get-Content -Path $BlitzFirstPath -Raw
147+
$azureContent += Get-Content -Path $BlitzFirstPath -Raw -Encoding UTF8
148148
}
149149

150150
[System.IO.File]::WriteAllText($InstallAzurePath, ($azureContent -join "`r`n"), $Utf8NoBom)
@@ -154,16 +154,16 @@ Write-Host " Built: Install-Azure.sql"
154154
# All sp_*.sql except sp_BlitzInMemoryOLTP.sql and sp_BlitzFirst.sql
155155
$allContent = Get-ChildItem -Path $RepoRoot -Filter "sp_*.sql" |
156156
Where-Object { $_.Name -notlike "*BlitzInMemoryOLTP*" -and $_.Name -notlike "*BlitzFirst*" } |
157-
ForEach-Object { Get-Content $_.FullName -Raw }
157+
ForEach-Object { Get-Content $_.FullName -Raw -Encoding UTF8 }
158158

159159
# Append SqlServerVersions.sql
160160
if (Test-Path $SqlVersionsPath) {
161-
$allContent += Get-Content -Path $SqlVersionsPath -Raw
161+
$allContent += Get-Content -Path $SqlVersionsPath -Raw -Encoding UTF8
162162
}
163163

164164
# Append sp_BlitzFirst.sql last
165165
if (Test-Path $BlitzFirstPath) {
166-
$allContent += Get-Content -Path $BlitzFirstPath -Raw
166+
$allContent += Get-Content -Path $BlitzFirstPath -Raw -Encoding UTF8
167167
}
168168

169169
[System.IO.File]::WriteAllText($InstallAllPath, ($allContent -join "`r`n"), $Utf8NoBom)

Install-All-Scripts.sql

Lines changed: 90 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ BEGIN
6969
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
7070

7171

72-
SELECT @Version = '8.31', @VersionDate = '20260406';
72+
SELECT @Version = '8.32', @VersionDate = '20260407';
7373
SET @OutputType = UPPER(@OutputType);
7474

7575
IF(@VersionCheckMode = 1)
@@ -10545,6 +10545,7 @@ IF NOT EXISTS ( SELECT 1
1054510545
SET NOCOUNT OFF;
1054610546
END
1054710547
GO
10548+
1054810549
SET ANSI_NULLS ON;
1054910550
SET QUOTED_IDENTIFIER ON
1055010551

@@ -10585,7 +10586,7 @@ BEGIN
1058510586
SET NOCOUNT ON;
1058610587
SET STATISTICS XML OFF;
1058710588

10588-
SELECT @Version = '8.31', @VersionDate = '20260406';
10589+
SELECT @Version = '8.32', @VersionDate = '20260407';
1058910590

1059010591
IF(@VersionCheckMode = 1)
1059110592
BEGIN
@@ -11438,6 +11439,7 @@ END
1143811439

1143911440
END
1144011441
GO
11442+
1144111443
IF OBJECT_ID('dbo.sp_BlitzBackups') IS NULL
1144211444
EXEC ('CREATE PROCEDURE dbo.sp_BlitzBackups AS RETURN 0;');
1144311445
GO
@@ -11464,7 +11466,7 @@ AS
1146411466
SET STATISTICS XML OFF;
1146511467
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
1146611468

11467-
SELECT @Version = '8.31', @VersionDate = '20260406';
11469+
SELECT @Version = '8.32', @VersionDate = '20260407';
1146811470

1146911471
IF(@VersionCheckMode = 1)
1147011472
BEGIN
@@ -12963,6 +12965,7 @@ END;
1296312965
END;
1296412966

1296512967
GO
12968+
1296612969
SET ANSI_NULLS ON;
1296712970
SET ANSI_PADDING ON;
1296812971
SET ANSI_WARNINGS ON;
@@ -13263,7 +13266,7 @@ SET NOCOUNT ON;
1326313266
SET STATISTICS XML OFF;
1326413267
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
1326513268

13266-
SELECT @Version = '8.31', @VersionDate = '20260406';
13269+
SELECT @Version = '8.32', @VersionDate = '20260407';
1326713270
SET @OutputType = UPPER(@OutputType);
1326813271

1326913272
IF(@VersionCheckMode = 1)
@@ -13793,6 +13796,13 @@ BEGIN
1379313796
RETURN;
1379413797
END;
1379513798

13799+
/* Check database compatibility level for STRING_SPLIT support */
13800+
IF (SELECT compatibility_level FROM sys.databases WHERE database_id = DB_ID()) < 130
13801+
BEGIN
13802+
RAISERROR('sp_BlitzCache requires database compatibility level 130 or higher. If your user databases aren''t at that compat level yet, install sp_BlitzCache in master instead.', 16, 1);
13803+
RETURN;
13804+
END;
13805+
1379613806
IF(@OutputType = 'NONE' AND (@OutputTableName IS NULL OR @OutputSchemaName IS NULL OR @OutputDatabaseName IS NULL))
1379713807
BEGIN
1379813808
RAISERROR('This procedure should be called with a value for all @Output* parameters, as @OutputType is set to NONE',12,1);
@@ -21293,6 +21303,7 @@ END; /* End of writing results to table */
2129321303
END; /*Final End*/
2129421304

2129521305
GO
21306+
2129621307
SET ANSI_NULLS ON;
2129721308
SET ANSI_PADDING ON;
2129821309
SET ANSI_WARNINGS ON;
@@ -21372,7 +21383,7 @@ SET NOCOUNT ON;
2137221383
SET STATISTICS XML OFF;
2137321384
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
2137421385

21375-
SELECT @Version = '8.31', @VersionDate = '20260406';
21386+
SELECT @Version = '8.32', @VersionDate = '20260407';
2137621387
SET @OutputType = UPPER(@OutputType);
2137721388

2137821389
IF(@VersionCheckMode = 1)
@@ -21393,7 +21404,7 @@ versions for free, watch training videos on how it works, get more info on
2139321404
the findings, contribute your own code, and more.
2139421405

2139521406
Known limitations of this version:
21396-
- Only Microsoft-supported versions of SQL Server. Sorry, 2005 and 2000.
21407+
- Only Microsoft-supported versions of SQL Server. Sorry, 2014 and older.
2139721408
- Index create statements are just to give you a rough idea of the syntax. It includes filters and fillfactor.
2139821409
-- Example 1: index creates use ONLINE=? instead of ONLINE=ON / ONLINE=OFF. This is because it is important
2139921410
for the user to understand if it is going to be offline and not just run a script.
@@ -28787,6 +28798,7 @@ BEGIN CATCH
2878728798
END CATCH;
2878828799
END
2878928800
GO
28801+
2879028802
IF OBJECT_ID('dbo.sp_BlitzLock') IS NULL
2879128803
BEGIN
2879228804
EXECUTE ('CREATE PROCEDURE dbo.sp_BlitzLock AS RETURN 0;');
@@ -28831,7 +28843,7 @@ BEGIN
2883128843
SET XACT_ABORT OFF;
2883228844
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
2883328845

28834-
SELECT @Version = '8.31', @VersionDate = '20260406';
28846+
SELECT @Version = '8.32', @VersionDate = '20260407';
2883528847

2883628848
IF @VersionCheckMode = 1
2883728849
BEGIN
@@ -29359,8 +29371,38 @@ BEGIN
2935929371
AND dxs.create_time IS NOT NULL
2936029372
)
2936129373
BEGIN
29362-
RAISERROR('A session with the name %s does not exist or is not currently active.', 11, 1, @EventSessionName) WITH NOWAIT;
29363-
RETURN;
29374+
IF @EventSessionName = N'system_health'
29375+
AND NOT EXISTS
29376+
(
29377+
SELECT
29378+
1/0
29379+
FROM sys.database_event_sessions AS ses
29380+
WHERE ses.name = @EventSessionName
29381+
)
29382+
BEGIN
29383+
RAISERROR('
29384+
The system_health extended events session is not available in Azure SQL DB.
29385+
29386+
To use sp_BlitzLock in Azure SQL DB, you have two options:
29387+
29388+
1. Create a database-scoped deadlock XE session, e.g.:
29389+
29390+
CREATE EVENT SESSION [deadlocks] ON DATABASE
29391+
ADD EVENT sqlserver.database_xml_deadlock_report
29392+
ADD TARGET package0.ring_buffer;
29393+
ALTER EVENT SESSION [deadlocks] ON DATABASE STATE = START;
29394+
29395+
Then call: EXEC sp_BlitzLock @EventSessionName = N''deadlocks'', @TargetSessionType = N''ring_buffer'';
29396+
29397+
2. Log deadlock XML to a table and use the @TargetTableName parameter.
29398+
', 0, 1) WITH NOWAIT;
29399+
RETURN;
29400+
END;
29401+
ELSE
29402+
BEGIN
29403+
RAISERROR('A session with the name %s does not exist or is not currently active.', 11, 1, @EventSessionName) WITH NOWAIT;
29404+
RETURN;
29405+
END;
2936429406
END;
2936529407
END;
2936629408

@@ -32407,7 +32449,7 @@ BEGIN
3240732449
en =
3240832450
DENSE_RANK() OVER (ORDER BY dp.event_date),
3240932451
qn =
32410-
ROW_NUMBER() OVER (PARTITION BY dp.event_date ORDER BY dp.event_date),
32452+
ROW_NUMBER() OVER (PARTITION BY dp.event_date ORDER BY dp.event_date) - 1,
3241132453
dn =
3241232454
ROW_NUMBER() OVER (PARTITION BY dp.event_date, dp.id ORDER BY dp.event_date),
3241332455
dp.is_victim,
@@ -32492,7 +32534,7 @@ BEGIN
3249232534
en =
3249332535
DENSE_RANK() OVER (ORDER BY dp.event_date),
3249432536
qn =
32495-
ROW_NUMBER() OVER (PARTITION BY dp.event_date ORDER BY dp.event_date),
32537+
ROW_NUMBER() OVER (PARTITION BY dp.event_date ORDER BY dp.event_date) - 1,
3249632538
dn =
3249732539
ROW_NUMBER() OVER (PARTITION BY dp.event_date, dp.id ORDER BY dp.event_date),
3249832540
is_victim = 1,
@@ -32554,11 +32596,8 @@ BEGIN
3255432596
d.en
3255532597
) +
3255632598
N', Query #'
32557-
+ CASE
32558-
WHEN d.qn = 0
32559-
THEN N'1'
32560-
ELSE CONVERT(nvarchar(10), d.qn)
32561-
END + CASE
32599+
+ CONVERT(nvarchar(10), d.qn + 1)
32600+
+ CASE
3256232601
WHEN d.is_victim = 1
3256332602
THEN N' - VICTIM'
3256432603
ELSE N''
@@ -33378,6 +33417,7 @@ BEGIN
3337833417
END; /*End debug*/
3337933418
END; /*Final End*/
3338033419
GO
33420+
3338133421
SET ANSI_NULLS ON;
3338233422
SET ANSI_PADDING ON;
3338333423
SET ANSI_WARNINGS ON;
@@ -33397,12 +33437,14 @@ SELECT
3339733437
WHEN CONVERT(NVARCHAR(128), SERVERPROPERTY ('PRODUCTVERSION')) LIKE '10%' THEN 0
3339833438
WHEN CONVERT(NVARCHAR(128), SERVERPROPERTY ('PRODUCTVERSION')) LIKE '11%' THEN 0
3339933439
WHEN CONVERT(NVARCHAR(128), SERVERPROPERTY ('PRODUCTVERSION')) LIKE '12%' THEN 0
33440+
WHEN CONVERT(NVARCHAR(128), SERVERPROPERTY ('PRODUCTVERSION')) LIKE '13%'
33441+
AND CAST(PARSENAME(CONVERT(NVARCHAR(128), SERVERPROPERTY ('PRODUCTVERSION')), 2) AS INT) < 5026 THEN 0
3340033442
ELSE 1
3340133443
END
3340233444
) = 0
3340333445
BEGIN
3340433446
DECLARE @msg VARCHAR(8000);
33405-
SELECT @msg = 'Sorry, sp_BlitzWho doesn''t work on versions of SQL prior to 2016.' + REPLICATE(CHAR(13), 7933);
33447+
SELECT @msg = 'Sorry, sp_BlitzWho doesn''t work on versions of SQL prior to 2016 SP2.' + REPLICATE(CHAR(13), 7933);
3340633448
PRINT @msg;
3340733449
RETURN;
3340833450
END;
@@ -33442,7 +33484,7 @@ BEGIN
3344233484
SET STATISTICS XML OFF;
3344333485
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
3344433486

33445-
SELECT @Version = '8.31', @VersionDate = '20260406';
33487+
SELECT @Version = '8.32', @VersionDate = '20260407';
3344633488

3344733489
IF(@VersionCheckMode = 1)
3344833490
BEGIN
@@ -33463,7 +33505,7 @@ versions for free, watch training videos on how it works, get more info on
3346333505
the findings, contribute your own code, and more.
3346433506

3346533507
Known limitations of this version:
33466-
- Only SQL Server 2016 and newer. Sorry, 2014 and earlier.
33508+
- Only SQL Server 2016 SP2 and newer. Sorry, 2016 SP1 and earlier.
3346733509
- If @OutputDatabaseName and @OutputSchemaName are populated, the database and
3346833510
schema must already exist. We will not create them, only the table.
3346933511

@@ -34496,6 +34538,7 @@ EXEC sp_executesql @StringToExecute,
3449634538

3449734539
END
3449834540
GO
34541+
3449934542
IF OBJECT_ID('dbo.CommandExecute') IS NULL
3450034543
BEGIN
3450134544
PRINT 'sp_DatabaseRestore is about to install, but you have not yet installed the Ola Hallengren maintenance scripts.'
@@ -34557,7 +34600,7 @@ SET STATISTICS XML OFF;
3455734600

3455834601
/*Versioning details*/
3455934602

34560-
SELECT @Version = '8.31', @VersionDate = '20260406';
34603+
SELECT @Version = '8.32', @VersionDate = '20260407';
3456134604

3456234605
IF(@VersionCheckMode = 1)
3456334606
BEGIN
@@ -36189,6 +36232,7 @@ IF OBJECT_ID( 'tempdb..#SplitDiffBackups' ) IS NOT NULL DROP TABLE #SplitDiffBac
3618936232
IF OBJECT_ID( 'tempdb..#SplitLogBackups' ) IS NOT NULL DROP TABLE #SplitLogBackups;
3619036233
END
3619136234
GO
36235+
3619236236
IF OBJECT_ID('dbo.sp_ineachdb') IS NULL
3619336237
EXEC ('CREATE PROCEDURE dbo.sp_ineachdb AS RETURN 0')
3619436238
GO
@@ -36228,7 +36272,7 @@ BEGIN
3622836272
SET NOCOUNT ON;
3622936273
SET STATISTICS XML OFF;
3623036274

36231-
SELECT @Version = '8.31', @VersionDate = '20260406';
36275+
SELECT @Version = '8.32', @VersionDate = '20260407';
3623236276

3623336277
IF(@VersionCheckMode = 1)
3623436278
BEGIN
@@ -36564,6 +36608,7 @@ OPTION (MAXRECURSION 0);
3656436608
DEALLOCATE dbs;
3656536609
END
3656636610
GO
36611+
3656736612
IF OBJECT_ID('dbo.sp_kill') IS NULL
3656836613
EXEC ('CREATE PROCEDURE dbo.sp_kill AS RETURN 0;');
3656936614
GO
@@ -36637,7 +36682,7 @@ BEGIN
3663736682
SOFTWARE.
3663836683
*/
3663936684

36640-
SELECT @Version = '8.31', @VersionDate = '20260406';
36685+
SELECT @Version = '8.32', @VersionDate = '20260407';
3664136686

3664236687
IF(@VersionCheckMode = 1)
3664336688
BEGIN
@@ -37214,13 +37259,24 @@ For more info, visit http://FirstResponderKit.org
3721437259
IF @Debug = 1
3721537260
RAISERROR('Creating/updating persistent output table...', 0, 1) WITH NOWAIT;
3721637261

37217-
SET @ObjectFullName = @OutputDatabaseName + N'.' + @OutputSchemaName + N'.' + @OutputTableName;
37262+
IF @AzureSQLDB = 1
37263+
SET @ObjectFullName = @OutputSchemaName + N'.' + @OutputTableName;
37264+
ELSE
37265+
SET @ObjectFullName = @OutputDatabaseName + N'.' + @OutputSchemaName + N'.' + @OutputTableName;
3721837266

3721937267
/* Create table if it doesn't exist */
37220-
SET @StringToExecute = N'USE ' + @OutputDatabaseName + N';
37221-
IF EXISTS(SELECT * FROM ' + @OutputDatabaseName + N'.INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = ''' + @OutputSchemaName + N''')
37222-
AND NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N'.INFORMATION_SCHEMA.TABLES WHERE QUOTENAME(TABLE_SCHEMA) = ''' + @OutputSchemaName + N''' AND QUOTENAME(TABLE_NAME) = ''' + @OutputTableName + N''')
37223-
CREATE TABLE ' + @OutputSchemaName + N'.' + @OutputTableName + N' (
37268+
IF @AzureSQLDB = 1
37269+
SET @StringToExecute = N'
37270+
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = ''' + @OutputSchemaName + N''')
37271+
AND NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE QUOTENAME(TABLE_SCHEMA) = ''' + @OutputSchemaName + N''' AND QUOTENAME(TABLE_NAME) = ''' + @OutputTableName + N''')
37272+
CREATE TABLE ' + @ObjectFullName + N' (';
37273+
ELSE
37274+
SET @StringToExecute = N'
37275+
IF EXISTS(SELECT * FROM ' + @OutputDatabaseName + N'.INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = ''' + @OutputSchemaName + N''')
37276+
AND NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N'.INFORMATION_SCHEMA.TABLES WHERE QUOTENAME(TABLE_SCHEMA) = ''' + @OutputSchemaName + N''' AND QUOTENAME(TABLE_NAME) = ''' + @OutputTableName + N''')
37277+
CREATE TABLE ' + @ObjectFullName + N' (';
37278+
37279+
SET @StringToExecute = @StringToExecute + N'
3722437280
Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
3722537281
ServerName NVARCHAR(128) NULL,
3722637282
CheckDate DATETIMEOFFSET NULL,
@@ -37405,7 +37461,10 @@ For more info, visit http://FirstResponderKit.org
3740537461
IF @OutputDatabaseName IS NOT NULL AND @OutputSchemaName IS NOT NULL AND @OutputTableName IS NOT NULL
3740637462
AND EXISTS (SELECT * FROM sys.databases WHERE QUOTENAME([name]) = @OutputDatabaseName)
3740737463
BEGIN
37408-
SET @ObjectFullName = @OutputDatabaseName + N'.' + @OutputSchemaName + N'.' + @OutputTableName;
37464+
IF @AzureSQLDB = 1
37465+
SET @ObjectFullName = @OutputSchemaName + N'.' + @OutputTableName;
37466+
ELSE
37467+
SET @ObjectFullName = @OutputDatabaseName + N'.' + @OutputSchemaName + N'.' + @OutputTableName;
3740937468
SET @StringToExecute = N'UPDATE ot
3741037469
SET ot.KillStartedTime = t.KillStartedTime,
3741137470
ot.KillEndedTime = t.KillEndedTime,
@@ -37443,6 +37502,7 @@ For more info, visit http://FirstResponderKit.org
3744337502
END;
3744437503
GO
3744537504

37505+
3744637506
IF (OBJECT_ID('dbo.SqlServerVersions') IS NULL)
3744737507
BEGIN
3744837508

@@ -37957,6 +38017,7 @@ VALUES
3795738017
(10, 1600, 'RTM ', '', '2008-08-06', '2014-07-08', '2019-07-09', 'SQL Server 2008', 'RTM ')
3795838018
;
3795938019
GO
38020+
3796038021
IF OBJECT_ID('dbo.sp_BlitzFirst') IS NULL
3796138022
EXEC ('CREATE PROCEDURE dbo.sp_BlitzFirst AS RETURN 0;');
3796238023
GO
@@ -38006,7 +38067,7 @@ SET NOCOUNT ON;
3800638067
SET STATISTICS XML OFF;
3800738068
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
3800838069

38009-
SELECT @Version = '8.31', @VersionDate = '20260406';
38070+
SELECT @Version = '8.32', @VersionDate = '20260407';
3801038071

3801138072
IF(@VersionCheckMode = 1)
3801238073
BEGIN

0 commit comments

Comments
 (0)