Skip to content

Commit 56de15d

Browse files
committed
Fix issue for @dbname = 'ALL' (works only for one database)
1 parent 54e01b8 commit 56de15d

File tree

1 file changed

+31
-20
lines changed

1 file changed

+31
-20
lines changed

Stored_Procedure/sp_BlitzInMemoryOLTP.sql

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ ALTER PROCEDURE dbo.sp_BlitzInMemoryOLTP(
1616
1717
.DESCRIPTION
1818
Get detailed information about In-Memory SQL Server objects
19+
Tested on SQL Server: 2014, 2016, 2017
1920
2021
.PARAMETER @instanceLevelOnly
2122
Only check instance In-Memory related information
@@ -46,6 +47,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
4647
.NOTE
4748
Author: Ned Otter
4849
Original link: http://nedotter.com/archive/2017/10/in-memory-oltp-diagnostic-script/
50+
Version: 1.0
51+
52+
Modified: 2017-12-06
53+
Author: Aleksey Nagorskiy
54+
Version: 1.1
55+
56+
Modified: 2017-12-13
57+
Author: Konstantin Taranov
58+
Version: 1.2
59+
60+
Modified: 2017-12-14
61+
Author: Konstantin Taranov
62+
Version: 1.3
4963
*/
5064
AS BEGIN TRY
5165

@@ -82,6 +96,8 @@ AS BEGIN TRY
8296
AND (name = @dbName OR @dbName = 'ALL')
8397
AND state_desc = 'ONLINE';
8498

99+
IF @debug =1 SELECT 'All not system and ONLINE databases' AS AllDatabases, * FROM #inmemDatabases;
100+
85101
IF @dbName IS NULL AND @instanceLevelOnly = 0
86102
BEGIN
87103
SET @errorMessage = '@dbName IS NULL, please specify database name or ALL';
@@ -160,9 +176,8 @@ AS BEGIN TRY
160176
####################################################
161177
*/
162178
DECLARE @sql NVARCHAR(MAX) = ''
163-
,@db NVARCHAR(257)
164-
,@counter INT = 1
165-
,@MaxRows INT = (SELECT COUNT(*) FROM #inmemDatabases);
179+
, @counter INT = 1
180+
, @MaxRows INT = (SELECT COUNT(*) FROM #inmemDatabases);
166181

167182
WHILE @counter <= @MaxRows
168183
BEGIN
@@ -174,35 +189,31 @@ AS BEGIN TRY
174189
SELECT @sql += ';WITH InMemDatabases AS (';
175190
END
176191

177-
IF @counter <> @MaxRows OR (@counter = 1 AND @counter = @MaxRows)
178-
SELECT @sql +=
192+
SELECT @sql +=
193+
CASE
194+
WHEN @counter = 1 THEN '' -- there is exactly 1 database for the entire instance
195+
ELSE @crlf + ' UNION ALL ' + @crlf
196+
END;
197+
198+
SELECT @sql +=
179199
CONCAT
180200
(
181201
@crlf
182202
,'SELECT DISTINCT '
183203
, ''''
184204
, name
185-
, ''' AS databaseName,'
205+
, ''' AS databaseName,' + @crlf
186206
, database_id
187-
, ' AS database_id FROM '
207+
, ' AS database_id' + @crlf+ ' FROM '
188208
, name
189-
, '.sys.database_files INNER JOIN '
209+
, '.sys.database_files' + @crlf + ' INNER JOIN '
190210
, name
191211
, '.sys.filegroups ON database_files.data_space_id = filegroups.data_space_id WHERE filegroups.type = ''FX'''
192212
)
193213
FROM #inmemDatabases
194214
WHERE rowNumber = @counter;
195215

196-
IF @debug = 1 PRINT(@sql);
197-
198-
199-
SELECT @sql +=
200-
CASE
201-
WHEN @counter = 1 AND @MaxRows = 1 THEN '' -- there is exactly 1 database for the entire instance
202-
WHEN @counter = @MaxRows THEN ''
203-
WHEN @counter <> 1 AND @counter = @MaxRows -1 THEN ''
204-
ELSE @crlf + ' UNION ALL ' + @crlf
205-
END;
216+
--IF @debug = 1 PRINT(@sql);
206217

207218
SELECT @counter += 1;
208219
END;
@@ -332,8 +343,8 @@ AS BEGIN TRY
332343
##############################################################
333344
*/
334345
SELECT @sql = CONCAT(
335-
'SELECT ''List indexes on memory-optimized tables in this database'','
336-
,'''Indexes'' AS objects,'
346+
'SELECT '
347+
,'''List indexes on memory-optimized tables in this database'' AS objects,'
337348
,''''
338349
,dbName
339350
,''''

0 commit comments

Comments
 (0)