#sql-server #reporting-services
Вопрос:
Мне нужно извлечь список путей, которые находятся в поле ExtensionSettings таблицы подписок в SSRS. У кого-нибудь есть сценарий для этого?
Ответ №1:
Я нашел здесь хороший сценарий: http://www.andrewing.co.uk/parse-ssrs-subscriptions-table/
WITH S AS (
SELECT TOP 1000
[SubscriptionID],
ExtensionSettings = cast(ExtensionSettings as xml)
FROM [ReportServer].[dbo].[Subscriptions]
)
SELECT
S.SubscriptionID,
TransmissionMethod = CASE
ExtensionSettings.value('(/ParameterValues/ParameterValue/Name)[1]', 'varchar(50)')
WHEN 'TO' THEN 'Email'
WHEN 'PATH' THEN 'File Share'
ELSE 'Unknown' END,
FileSharePath = ExtensionSettings.query('
for $parameter in /ParameterValues/ParameterValue
let $name := $parameter/Name
let $value := $parameter/Value
where $name = "PATH"
return data($value)'),
FileName = ExtensionSettings.query('
for $parameter in /ParameterValues/ParameterValue
let $name := $parameter/Name
let $value := $parameter/Value
where $name = "FILENAME"
return data($value)'),
RenderFormat = ExtensionSettings.query('
for $parameter in /ParameterValues/ParameterValue
let $name := $parameter/Name
let $value := $parameter/Value
where $name = "RENDER_FORMAT" or $name = RenderFormat"
return data($value)'),
EmailSubject = ExtensionSettings.query('
for $parameter in /ParameterValues/ParameterValue
let $name := $parameter/Name
let $value := $parameter/Value
where $name = "Subject"
return data($value)'),
ExtensionSettings
FROM S
Комментарии:
1. Это может быть сделано с некоторой оптимизацией: например
FileSharePath = ExtensionSettings.query('/ParameterValues/ParameterValue[Name[text() = "PATH"]]/Value/text()
, и если вам нужно только одно значение из этого, то вы должны использовать.value
вместо.query