@@ -12,7 +12,7 @@ USE [$(_database)];
12
12
GO
13
13
14
14
:setvar login_name " " -- to search for an individual account enter it here e.g. "Domain\UserName"
15
-
15
+ :setvar ssrs_service_account " Domain\ssrs_service_account "
16
16
17
17
SET XACT_ABORT ON
18
18
BEGIN TRANSACTION ;
@@ -39,7 +39,7 @@ PRINT 'check databases owners ... ';
39
39
SELECT
40
40
[Server_Name] = @@SERVERNAME
41
41
, [Database_Name] = db.[name]
42
- , [Login_Name ] = sl.[Name]
42
+ , [Database_Owner ] = sl.[Name]
43
43
, [CommandToRun] = (CASE WHEN db.[is_read_only] = 1 THEN ' -- Remove ReadOnly State' WHEN db.[state_desc] = ' ONLINE' THEN ' ALTER AUTHORIZATION on DATABASE::[' + db.[name] + ' ] to [sa];' ELSE ' -- Turn On ' END )
44
44
-- , [Database_ID] = db.[database_id]
45
45
-- , [Current_State] = db.[state_desc]
@@ -100,6 +100,7 @@ PRINT 'check databases users ... ';
100
100
AND dbu1.[User_Name] = dbu2.[User_Name]
101
101
FOR XML PATH (' ' )
102
102
), 1 , 1 , ' ' )
103
+ , [CommandToRun] = ' USE [' + [Database_Name] + ' ]; DROP USER [' + [User_Name] + ' ];'
103
104
-- , [Login_Type]
104
105
FROM
105
106
@dbs_users AS dbu1
@@ -143,23 +144,32 @@ PRINT '=====================================================================';
143
144
PRINT ' check report subscriptions ... ' ;
144
145
145
146
IF DB_ID (' ReportServer' ) IS NOT NULL
147
+ WITH
148
+ service_account
149
+ AS
150
+ (
151
+ SELECT [service_account_id] = [UserID], [UserName] FROM [ReportServer].[dbo].[Users] WHERE [UserName] = N ' $(ssrs_service_account)'
152
+ )
146
153
SELECT DISTINCT
147
154
[Server_Name] = @@SERVERNAME
148
155
, [Report_Name] = rp.[Name]
149
156
, [Subscription_Owner] = ou.[UserName]
150
157
, [Subscription_Owner_ID] = ou.[UserID]
158
+ , [CommandToRun] = ' UPDATE [ReportServer].[dbo].[Subscriptions] SET [OwnerID] = '' ' + CAST (sa.[service_account_id] AS VARCHAR (MAX )) + ' '' WHERE [OwnerID] = '' ' + CAST (ou.[UserID] AS VARCHAR (MAX )) + ' '' '
151
159
-- , sb.[Report_OID]
152
160
FROM
153
161
[ReportServer].[dbo].[Subscriptions] AS sb
154
- INNER JOIN [ReportServer].[dbo].[Catalog] AS rp ON rp.[ItemID] = sb.[Report_OID]
155
162
INNER JOIN [ReportServer].[dbo].[Users] AS ou ON ou.[UserID] = sb.[OwnerID]
163
+ INNER JOIN [ReportServer].[dbo].[Catalog] AS rp ON rp.[ItemID] = sb.[Report_OID]
164
+ , service_account AS sa
156
165
WHERE
157
166
1 = 1
158
167
AND ou.[UserName] NOT IN (SELECT [Login_Name] COLLATE Latin1_General_CI_AS FROM #service_accounts)
159
168
AND (ou.[UserName] = N ' $(login_name)' OR N ' $(login_name)' = N ' ' )
160
169
170
+
161
171
PRINT ' ******* ROLLBACK TRANSACTION ******* ' ;
162
172
ROLLBACK TRANSACTION ;
163
173
164
174
-- PRINT '******* COMMIT TRANSACTION ******* ';
165
- -- COMMIT TRANSACTION;
175
+ -- COMMIT TRANSACTION;
0 commit comments