Разделить параметры из ExecutionLog в SSRS (Строковые функции) - PullRequest
3 голосов
/ 23 сентября 2010

Вопрос «Еще одна строковая функция» для TSQL.

Таблица ExecutionLogStorage в базе данных ReportServer $ InstanceName для SSRS 2008 помещает все параметры, вызываемые в отчет, в один столбец -

FullName= LastName, FirstName & CalledBy = Фамилия, FirstName & DateSelected = MM / DD / YY & CheeseorFries = Fries

Некоторые имеют нулевые значения, поэтому у пользователя могут быть только DateSelect или FullName или CalledBy ... и т. Д. Мне нужно иметь возможностьразобрать значение «CalledBy = Фамилия, Имя»;но между НИЖНИМИ и LTRIM и Левами, Подструнами и Хариндексами ... Я никуда не денусь.

Есть идеи?= /

Цель состоит в том, чтобы иметь возможность получить список тех, кто вызывал отчет, в какое время ....

Журнал выполнения SSRS имеет столбец имени пользователя, но из-за отчетовбудучи вызванным из портала DNN, используя связанные серверы, менеджеры решили, что вся процедура делегирования сети легче обойти, просто используя учетную запись службы домена - поэтому все поля «имя пользователя» заполняются учетной записью службы, а не отдельным лицом.

спасибо!

1 Ответ

1 голос
/ 05 ноября 2010
    SELECT  
RTrim(Substring(ex.Parameters, Charindex('&CalledBy=',ex.Parameters, 1) + 10, 1000)) 
as 'User',
ex.Format, ex.TimeStart, cat.Name as 'Report', 
CONVERT(varchar(max), ex.TimeStart, 100) AS rundate
FROM ReportServer$MCSQL1.dbo.ExecutionLog AS ex, ReportServer$MCSQL1.dbo.Catalog AS cat
where ex.ReportID = cat.ItemID

Не уверен, работает ли он во всех случаях.По сути, все отчеты, запускаемые с веб-сайта DNN, управляются учетной записью выполнения, поэтому поле «пользователь» отчета об исполнении было бесполезным.Вместо этого мы создали параметр CalledBy и передали ему полное имя из профиля сотрудника, который извлек отчет в DNN.

Э-э, я также считаю, что нарушаю какое-то правило программирования, считаяна тот факт, что CalledBy всегда будет последним параметром в строке ('1000') ..... но мы документируем его, чтобы будущие люди могли следовать за ним.

rtrim (подстрока... приведенный выше код соответствующим образом извлек имя человека, вызывающего отчет, с тех пор, как параметр был введен в действие несколько месяцев назад. (невидимое поле в правом нижнем углу отчета)

Надеюсь, это поможет!

...