Skip to content

Commit becf136

Browse files
committed
Adds changes in foreachdb
Sneaking in Andy's PR
1 parent 41ce240 commit becf136

File tree

1 file changed

+35
-14
lines changed

1 file changed

+35
-14
lines changed

Install-All-Scripts.sql

+35-14
Original file line numberDiff line numberDiff line change
@@ -32543,13 +32543,14 @@ GO
3254332543

3254432544
ALTER PROCEDURE dbo.sp_foreachdb
3254532545
-- Original fields from sp_MSforeachdb...
32546-
@command1 NVARCHAR(MAX) ,
32546+
@command1 NVARCHAR(MAX) = NULL,
3254732547
@replacechar NCHAR(1) = N'?' ,
3254832548
@command2 NVARCHAR(MAX) = NULL ,
3254932549
@command3 NVARCHAR(MAX) = NULL ,
3255032550
@precommand NVARCHAR(MAX) = NULL ,
3255132551
@postcommand NVARCHAR(MAX) = NULL ,
3255232552
-- Additional fields for our sp_foreachdb!
32553+
@command NVARCHAR(MAX) = NULL, --For backwards compatibility
3255332554
@print_dbname BIT = 0 ,
3255432555
@print_command_only BIT = 0 ,
3255532556
@suppress_quotename BIT = 0 ,
@@ -32573,6 +32574,14 @@ AS
3257332574
SET @Version = '2.0';
3257432575
SET @VersionDate = '20171201';
3257532576

32577+
IF ( (@command1 IS NOT NULL AND @command IS NOT NULL)
32578+
OR (@command1 IS NULL AND @command IS NULL) )
32579+
BEGIN
32580+
RAISERROR('You must supply either @command1 or @command, but not both.',16,1);
32581+
RETURN -1;
32582+
END;
32583+
32584+
SET @command1 = COALESCE(@command1,@command);
3257632585

3257732586
DECLARE @sql NVARCHAR(MAX) ,
3257832587
@dblist NVARCHAR(MAX) ,
@@ -32640,55 +32649,67 @@ AS
3264032649

3264132650
CREATE TABLE #x ( db NVARCHAR(300) );
3264232651

32643-
SET @sql = N'SELECT name FROM sys.databases WHERE 1=1'
32644-
+ CASE WHEN @system_only = 1 THEN ' AND database_id IN (1,2,3,4)'
32652+
SET @sql = N'SELECT name FROM sys.databases d WHERE 1=1'
32653+
+ CASE WHEN @system_only = 1 THEN ' AND d.database_id IN (1,2,3,4)'
3264532654
ELSE ''
3264632655
END
3264732656
+ CASE WHEN @user_only = 1
32648-
THEN ' AND database_id NOT IN (1,2,3,4)'
32657+
THEN ' AND d.database_id NOT IN (1,2,3,4)'
3264932658
ELSE ''
3265032659
END
3265132660
-- To exclude databases from changes
3265232661
+ CASE WHEN @exlist IS NOT NULL
32653-
THEN ' AND name NOT IN (' + @exlist + ')'
32662+
THEN ' AND d.name NOT IN (' + @exlist + ')'
3265432663
ELSE ''
3265532664
END + CASE WHEN @name_pattern <> N'%'
32656-
THEN ' AND name LIKE N''' + REPLACE(@name_pattern,
32665+
THEN ' AND d.name LIKE N''' + REPLACE(@name_pattern,
3265732666
'''', '''''')
3265832667
+ ''''
3265932668
ELSE ''
3266032669
END + CASE WHEN @dblist IS NOT NULL
32661-
THEN ' AND name IN (' + @dblist + ')'
32670+
THEN ' AND d.name IN (' + @dblist + ')'
3266232671
ELSE ''
3266332672
END
3266432673
+ CASE WHEN @recovery_model_desc IS NOT NULL
32665-
THEN ' AND recovery_model_desc = N'''
32674+
THEN ' AND d.recovery_model_desc = N'''
3266632675
+ @recovery_model_desc + ''''
3266732676
ELSE ''
3266832677
END
3266932678
+ CASE WHEN @compatibility_level IS NOT NULL
32670-
THEN ' AND compatibility_level = '
32679+
THEN ' AND d.compatibility_level = '
3267132680
+ RTRIM(@compatibility_level)
3267232681
ELSE ''
3267332682
END
3267432683
+ CASE WHEN @state_desc IS NOT NULL
32675-
THEN ' AND state_desc = N''' + @state_desc + ''''
32684+
THEN ' AND d.state_desc = N''' + @state_desc + ''''
3267632685
ELSE ''
3267732686
END
32687+
+ CASE WHEN @state_desc = 'ONLINE' AND SERVERPROPERTY('IsHadrEnabled') = 1
32688+
THEN ' AND NOT EXISTS (SELECT 1
32689+
FROM sys.dm_hadr_database_replica_states drs
32690+
JOIN sys.availability_replicas ar
32691+
ON ar.replica_id = drs.replica_id
32692+
JOIN sys.dm_hadr_availability_group_states ags
32693+
ON ags.group_id = ar.group_id
32694+
WHERE drs.database_id = d.database_id
32695+
AND ar.secondary_role_allow_connections = 0
32696+
AND ags.primary_replica <> @@SERVERNAME)'
32697+
ELSE ''
32698+
END
3267832699
+ CASE WHEN @is_read_only IS NOT NULL
32679-
THEN ' AND is_read_only = ' + RTRIM(@is_read_only)
32700+
THEN ' AND d.is_read_only = ' + RTRIM(@is_read_only)
3268032701
ELSE ''
3268132702
END
3268232703
+ CASE WHEN @is_auto_close_on IS NOT NULL
32683-
THEN ' AND is_auto_close_on = ' + RTRIM(@is_auto_close_on)
32704+
THEN ' AND d.is_auto_close_on = ' + RTRIM(@is_auto_close_on)
3268432705
ELSE ''
3268532706
END
3268632707
+ CASE WHEN @is_auto_shrink_on IS NOT NULL
32687-
THEN ' AND is_auto_shrink_on = ' + RTRIM(@is_auto_shrink_on)
32708+
THEN ' AND d.is_auto_shrink_on = ' + RTRIM(@is_auto_shrink_on)
3268832709
ELSE ''
3268932710
END
3269032711
+ CASE WHEN @is_broker_enabled IS NOT NULL
32691-
THEN ' AND is_broker_enabled = ' + RTRIM(@is_broker_enabled)
32712+
THEN ' AND d.is_broker_enabled = ' + RTRIM(@is_broker_enabled)
3269232713
ELSE ''
3269332714
END;
3269432715

0 commit comments

Comments
 (0)