Skip to content

Commit f20de30

Browse files
authored
Update UpdateSubscriptionOwner.sql
1 parent c3afc2e commit f20de30

File tree

1 file changed

+29
-145
lines changed

1 file changed

+29
-145
lines changed
Lines changed: 29 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/*------------------------------------------------------------------------------+
22
| Purpose: How to Update the owner of deployed reports and subscriptions
33
| Note: SQLCmdMode Script
4+
| Reference: http://www.andrewjbillings.com/ssrs-migration-subscriptions-dont-work-if-owner-no-longer-exists/
45
+--------------------------------------------------------------------------------
56
:setvar _server "Server1"
67
:setvar _user "***username***"
@@ -17,166 +18,49 @@ GO
1718
SET XACT_ABORT ON
1819
BEGIN TRANSACTION
1920

20-
PRINT '====================================================================='
21-
PRINT 'Find subscriptions for user...'
22-
PRINT '====================================================================='
23-
24-
;WITH
25-
user_list
26-
AS
27-
(
28-
SELECT UserID, UserName FROM dbo.Users WHERE UserName = N'$(OldUser)'
29-
)
30-
--SELECT 'BEFORE', * FROM user_list
31-
SELECT
32-
'BEFORE'
33-
, ul.UserName
34-
, sb.*
35-
FROM
36-
dbo.Subscriptions sb
37-
INNER JOIN user_list ul ON sb.OwnerID = ul.UserID
38-
3921
PRINT '====================================================================='
4022
PRINT 'Update subscriptions...'
4123
PRINT '====================================================================='
4224

4325
;WITH
44-
user_old
45-
AS
46-
(
47-
SELECT Old_UserID = UserID, UserName FROM dbo.Users WHERE UserName = N'$(OldUser)'
48-
)
49-
,
50-
user_new
51-
AS
52-
(
53-
SELECT New_UserID = UserID, UserName FROM dbo.Users WHERE UserName = N'$(NewUser)'
54-
)
55-
--SELECT
56-
-- uo.UserName
57-
-- , un.UserName
58-
UPDATE
59-
dbo.Subscriptions
60-
SET
61-
OwnerID = un.New_UserID
62-
FROM
63-
dbo.Subscriptions sb
64-
INNER JOIN user_old uo ON sb.OwnerID = uo.Old_UserID
65-
, user_new un
66-
67-
PRINT '====================================================================='
68-
PRINT 'Update reports...'
69-
PRINT '====================================================================='
70-
71-
;WITH
72-
user_old
73-
AS
74-
(
75-
SELECT Old_UserID = UserID, UserName FROM dbo.Users WHERE UserName = N'$(OldUser)'
76-
)
77-
,
78-
user_new
79-
AS
80-
(
81-
SELECT New_UserID = UserID, UserName FROM dbo.Users WHERE UserName = N'$(NewUser)'
82-
)
83-
UPDATE
84-
dbo.Catalog
85-
SET
86-
CreatedById = un.New_UserID
87-
FROM
88-
dbo.Catalog AS c
89-
INNER JOIN user_old uo ON c.CreatedById = uo.Old_UserID
90-
, user_new un
91-
--WHERE c.Type = 2
92-
93-
;WITH
94-
user_old
26+
new_owner
9527
AS
9628
(
97-
SELECT Old_UserID = UserID, UserName FROM dbo.Users WHERE UserName = N'$(OldUser)'
29+
SELECT UserID, UserName FROM dbo.Users WHERE UserName = N'$(NewUser)'
9830
)
9931
,
100-
user_new
32+
subscription_source
10133
AS
10234
(
103-
SELECT New_UserID = UserID, UserName FROM dbo.Users WHERE UserName = N'$(NewUser)'
35+
SELECT DISTINCT
36+
s.[Report_OID]
37+
, [OldOwner] = ou.UserName
38+
, [OldOwnerID] = ou.UserID
39+
, [NewOwner] = nu.UserName
40+
, [NewOwnerID] = nu.UserID
41+
FROM
42+
dbo.Subscriptions AS s
43+
INNER JOIN dbo.Users AS ou ON ou.[UserID] = s.[OwnerID]
44+
, new_owner AS nu
45+
WHERE
46+
1=1
47+
AND ou.[UserName] = N'$(OldUser)'
10448
)
105-
UPDATE
106-
dbo.Catalog
107-
SET
108-
ModifiedById = un.New_UserID
109-
FROM
110-
dbo.Catalog AS c
111-
INNER JOIN user_old uo ON c.ModifiedById = uo.Old_UserID
112-
, user_new un
113-
--WHERE c.Type = 2
49+
--SELECT * FROM subscription_source
50+
MERGE dbo.Subscriptions AS T
51+
USING subscription_source AS S ON T.[Report_OID] = S.[Report_OID]
52+
WHEN MATCHED
53+
THEN UPDATE SET
54+
T.[OwnerID] = S.[NewOwnerID]
55+
OUTPUT @@ServerName AS ServerName, db_name() AS DatabaseName, $action, inserted.*, deleted.*;
11456

115-
;WITH
116-
user_old
117-
AS
118-
(
119-
SELECT Old_UserID = UserID, UserName FROM dbo.Users WHERE UserName = N'$(OldUser)'
120-
)
121-
,
122-
user_new
123-
AS
124-
(
125-
SELECT New_UserID = UserID, UserName FROM dbo.Users WHERE UserName = N'$(NewUser)'
126-
)
127-
SELECT
128-
c.CreatedById
129-
, c.ModifiedById
130-
, uo.UserName
131-
, un.UserName
132-
, c.*
133-
FROM
134-
dbo.Catalog AS c
135-
INNER JOIN user_old uo ON c.CreatedById = uo.Old_UserID
136-
, user_new un
13757

138-
PRINT '====================================================================='
139-
PRINT 'Find OLD subscriptions for user...'
140-
PRINT '====================================================================='
58+
PRINT '******* ROLLBACK TRANSACTION ******* ';
59+
ROLLBACK TRANSACTION;
14160

142-
;WITH
143-
user_list
144-
AS
145-
(
146-
SELECT UserID, UserName FROM dbo.Users WHERE UserName = N'$(OldUser)'
147-
)
148-
--SELECT 'BEFORE', * FROM user_list
149-
SELECT
150-
'AFTER'
151-
, ul.UserName
152-
, sb.*
153-
FROM
154-
dbo.Subscriptions sb
155-
INNER JOIN user_list ul ON sb.OwnerID = ul.UserID
156-
157-
PRINT '====================================================================='
158-
PRINT 'Find NEW subscriptions for user...'
159-
PRINT '====================================================================='
160-
161-
;WITH
162-
user_list
163-
AS
164-
(
165-
SELECT UserID, UserName FROM dbo.Users WHERE UserName = N'$(NewUser)'
166-
)
167-
--SELECT 'BEFORE', * FROM user_list
168-
SELECT
169-
'AFTER'
170-
, ul.UserName
171-
, sb.*
172-
FROM
173-
dbo.Subscriptions sb
174-
INNER JOIN user_list ul ON sb.OwnerID = ul.UserID
175-
176-
177-
ROLLBACK TRANSACTION
178-
--COMMIT TRANSACTION
61+
--PRINT '******* COMMIT TRANSACTION ******* ';
62+
--COMMIT TRANSACTION;
17963

18064
PRINT '====================================================================='
18165
PRINT 'Finished...'
182-
PRINT '====================================================================='
66+
PRINT '====================================================================='

0 commit comments

Comments
 (0)