gpt4 book ai didi

tsql - 从 SSRS 中的 ExecutionLog 中分割参数(字符串函数)

转载 作者:行者123 更新时间:2023-12-02 07:46:59 26 4
gpt4 key购买 nike

TSQL 的“又一个字符串函数”问题。

SSRS 2008 的 ReportServer$InstanceName 数据库中的 ExecutionLogStorage 表将调用报表的所有参数放在单个列中 -

FullName=姓氏、名字&CalledBy=姓氏、名字&DateSelected=MM/DD/YY&CheeseorFries=薯条

有些是空值,因此用户可能只有 DateSelect 或 FullName,或 CalledBy... 等。我需要能够解析出“CalledBy=Lastname, FirstName”值;但在 LOWER 和 LTRIM 以及 Lefts 和 Substrings 和 Charindexes 之间......我什么也没得到。

有什么想法吗? =/

目的是能够检索谁在何时调用哪个报告的列表......

SSRS 执行日志有一个用户名列,但由于报告是从 DNN 门户调用的,使用链接服务器,管理人员认为仅使用域服务帐户就可以更轻松地绕过整个网络委托(delegate) - 所以所有“用户名”字段由服务帐户而不是个人填写。

谢谢!

最佳答案

    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”)......但我们是记录下来,以便 future 的人们可以跟进。

自几个月前设置该参数以来,上面的 rtrim(substring... 代码已适本地提取了调用该报告的个人的姓名。(报告右下角的不可见字段)

希望这有帮助!

关于tsql - 从 SSRS 中的 ExecutionLog 中分割参数(字符串函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3780532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com