gpt4 book ai didi

reporting-services - 如何获取运行报告的用户的身份?

转载 作者:行者123 更新时间:2023-12-04 10:55:26 24 4
gpt4 key购买 nike

在 MSCRM 2011 中执行报表时,您有两个数据源选项:SQL 或 Fetch。

在 SSRS 执行日志中,运行报告的用户始终是服务帐户。

使用fetch时,在报表执行日志中,有一个参数CRM_FullName包含了运行报表的用户全名。

使用 SQL 源时,没有 CRM_FullName 参数。我怎么知道谁跑了报告?必须有办法知道,因为过滤 View 知道我是谁。

最佳答案

实际上没有办法找到这些信息。当您为 MSCRM 创建报表时,您使用名为“MSCRM 数据连接器”的连接器。这可以在 SSRS 实例的 ExecutionLogs3 View 的 AdditionnalInfo 列中看到。使用此连接器并尝试显示报告时,系统会提示您输入用户名和密码。这就是事情变得有趣的地方。

该报告实际上并不需要用户名/密码!事实上,它期望接收 systemuserid (guid) 作为用户名和组织 ID (guid) 作为密码。然后在 MSCRM_CONFIG 数据库中搜索组织数据库设置。然后,它进入组织数据库并简单地执行 set context_info SYSTEMUSERID .最后,filteredviews 调用一个名为“[dbo].[fn_FindUserGuid]”的函数来检索context_info。这就是过滤 View 在作为服务帐户连接时正常工作的方式。

正如您所料,我们无法知道运行报告的用户,因为 SSRS 中的用户名和密码提示从未记录在任何地方(可能是出于安全考虑)。

我发现记录谁运行报告的最佳选择是实际创建一个存储过程,该过程将对过滤的 View (或任何表,原样)进行选择语句,然后将语句登录到单独的表中,过程参数和 context_info()。然后,在 SSRS 中,我调用该函数而不是直接转到过滤 View 。

关于reporting-services - 如何获取运行报告的用户的身份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10333574/

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