Here is my attempt to loop through the emails and add to another table a list of reports and emails
SELECT DISTINCT
subs.Subscriptionid SUB_ID,
subs.report_oid,
c.Path,
c.[Name]as ReportName,
replace(replace(CAST(CAST(extensionsettings as XML).query('/ParameterValues/ParameterValue/Value[../Name =''TO'']') as varchar(8000)), '</Value>', ''), '<Value>', '') + '; ' AS TO_RECPTS,
replace(replace(CAST(CAST(extensionsettings as XML).query('/ParameterValues/ParameterValue/Value[../Name =''CC'']') as varchar(8000)), '</Value>', ''), '<Value>', '') + '; ' AS CC_RECPTS
into #subs
FROM
ReportServer.dbo.Subscriptions subs with(nolock)
join ddcd3035.reportserver.dbo.catalog c
on c.itemid = subs.report_oid
where subs.lastruntime >='2011-11-01'
ALTER TABLE #subs
ADD URL VARCHAR(1000)
UPDATE #subs
SET URL = 'unknown'
Create Table #Subscriptions (
SUB_ID varchar(50),
REPORT_OID varchar(50),
Email Varchar(100),
ReportPath Varchar(1000),
ReportName Varchar(1000),
URL Varchar(1000),
UnsubscribeURL Varchar(1000) )
begin
declare @url varchar(max)
set @url = 'http://LOCALHOST/Reports/Pages/Report.aspx?ItemPath=%2f'
WHILE EXISTS (SELECT TOP 1 SUB_ID FROM #subs WHERE URL = 'unknown' )
BEGIN
DECLARE @email VARCHAR(MAX)
DECLARE @origpath VARCHAR(MAX)
DECLARE @report VARCHAR(MAX)
DECLARE @SUB VARCHAR(MAX)
SET @email = (SELECT MIN(TO_RECPTS) FROM #subs where url ='unknown')
SET @origpath = (SELECT MIN([Path]) FROM #subs where url ='unknown')
SET @report = (SELECT MIN(ReportName) FROM #subs where url ='unknown')
DECLARE @temp VARCHAR(MAX)
SET @temp = @email
DECLARE @index INT
SET @index = charindex(';', @email)
SET @email = substring(@email, @index+1, len(@email)-1)
--Loop through the EMAIL LIST
WHILE (@index <> 0)
BEGIN
SET @index = charindex(';', @email)
IF @index <>0
BEGIN
set @temp = @temp + substring(@email, 1, charindex(';', @email)-1)
SET @email = substring(@email, @index+1, len(@email)-1)
set @temp = @temp
END
END
SET @temp = @email
INSERT INTO #subscriptions (Email, ReportName, URL )
SELECT @temp
,@report
,@url
FROM #subs
WHERE SUB_ID = @SUB
DELETE FROM #subs
WHERE SUB_ID = @SUB
END
SET @SUB = (SELECT TOP 1 SUB_ID FROM #subs WHERE URL ='UNKNOWN')
END
answered
Mar 02 '12 at 01:02 AM
siera_gld
936
●
52
●
70
●
73