Skip to content

Commit 460aa01

Browse files
Update sp_ineachdb.sql
Fixes BrentOzarULTD#2507. Added `is_distributor` to the #temp table so we could filter out `distribution` as a system database.
1 parent bd37a8a commit 460aa01

1 file changed

Lines changed: 22 additions & 20 deletions

File tree

‎sp_ineachdb.sql‎

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,12 @@ BEGIN
3636

3737
SELECT @Version = '2.97', @VersionDate = '20200712';
3838

39-
IF(@VersionCheckMode = 1)
40-
BEGIN
39+
IF(@VersionCheckMode = 1)
40+
BEGIN
4141
RETURN;
42-
END;
43-
IF @Help = 1
42+
END;
43+
44+
IF @Help = 1
4445

4546
BEGIN
4647

@@ -98,12 +99,11 @@ IF @Help = 1
9899
@dbq sysname,
99100
@cmd nvarchar(max),
100101
@thisdb sysname,
101-
@cr char(2) = CHAR(13) + CHAR(10);
102+
@cr char(2) = CHAR(13) + CHAR(10),
103+
@SQLVersion AS tinyint = (@@microsoftversion / 0x1000000) & 0xff, -- Stores the SQL Server Version Number(8(2000),9(2005),10(2008 & 2008R2),11(2012),12(2014),13(2016),14(2017)
104+
@ServerName AS sysname = CONVERT(sysname, SERVERPROPERTY('ServerName')); -- Stores the SQL Server Instance name.
102105

103-
DECLARE @SQLVersion AS tinyint = (@@microsoftversion / 0x1000000) & 0xff -- Stores the SQL Server Version Number(8(2000),9(2005),10(2008 & 2008R2),11(2012),12(2014),13(2016),14(2017))
104-
DECLARE @ServerName AS sysname = CONVERT(sysname, SERVERPROPERTY('ServerName')) -- Stores the SQL Server Instance name.
105-
106-
CREATE TABLE #ineachdb(id int, name nvarchar(512));
106+
CREATE TABLE #ineachdb(id int, name nvarchar(512), is_distributor bit);
107107

108108
IF @database_list > N''
109109
-- comma-separated list of potentially valid/invalid/quoted/unquoted names
@@ -117,15 +117,15 @@ DECLARE @ServerName AS sysname = CONVERT(sysname, SERVERPROPERTY('ServerName'))
117117
WHERE n <= LEN(@database_list)
118118
AND SUBSTRING(N',' + @database_list, n, 1) = N','
119119
)
120-
INSERT #ineachdb(id,name)
121-
SELECT d.database_id, d.name
120+
INSERT #ineachdb(id,name,is_distributor)
121+
SELECT d.database_id, d.name, d.is_distributor
122122
FROM sys.databases AS d
123123
WHERE EXISTS (SELECT 1 FROM names WHERE name = d.name)
124124
OPTION (MAXRECURSION 0);
125125
END
126126
ELSE
127127
BEGIN
128-
INSERT #ineachdb(id,name) SELECT database_id, name FROM sys.databases;
128+
INSERT #ineachdb(id,name,is_distributor) SELECT database_id, name, is_distributor FROM sys.databases;
129129
END
130130

131131
-- first, let's delete any that have been explicitly excluded
@@ -151,8 +151,8 @@ DECLARE @ServerName AS sysname = CONVERT(sysname, SERVERPROPERTY('ServerName'))
151151

152152
-- next, let's delete any that *don't* match various criteria passed in
153153
DELETE dbs FROM #ineachdb AS dbs
154-
WHERE (@system_only = 1 AND id NOT IN (1,2,3,4))
155-
OR (@user_only = 1 AND id IN (1,2,3,4))
154+
WHERE (@system_only = 1 AND (id NOT IN (1,2,3,4) AND is_distributor <> 1))
155+
OR (@user_only = 1 AND (id IN (1,2,3,4) OR is_distributor = 1))
156156
OR name NOT LIKE @name_pattern
157157
OR name LIKE @exclude_pattern
158158
OR EXISTS
@@ -198,11 +198,12 @@ DECLARE @ServerName AS sysname = CONVERT(sysname, SERVERPROPERTY('ServerName'))
198198
)
199199
);
200200

201-
-- from Andy Mallon / First Responders Kit. Make sure that if we're an
202-
-- AG secondary, we skip any database where allow connections is off
203-
if @SQLVersion >= 11
204-
DELETE dbs FROM #ineachdb AS dbs
205-
WHERE EXISTS
201+
-- from Andy Mallon / First Responders Kit. Make sure that if we're an
202+
-- AG secondary, we skip any database where allow connections is off
203+
IF @SQLVersion >= 11
204+
BEGIN
205+
DELETE dbs FROM #ineachdb AS dbs
206+
WHERE EXISTS
206207
(
207208
SELECT 1 FROM sys.dm_hadr_database_replica_states AS drs
208209
INNER JOIN sys.availability_replicas AS ar
@@ -212,7 +213,8 @@ if @SQLVersion >= 11
212213
WHERE drs.database_id = dbs.id
213214
AND ar.secondary_role_allow_connections = 0
214215
AND ags.primary_replica <> @ServerName
215-
);
216+
);
217+
END
216218

217219
-- Well, if we deleted them all...
218220
IF NOT EXISTS (SELECT 1 FROM #ineachdb)

0 commit comments

Comments
 (0)