7

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

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

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

使用 SQL 源时,没有 CRM_FullName 参数。我怎么知道是谁编写了报告?一定有办法知道,因为过滤后的视图知道我是谁。

4

3 回答 3

6

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

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

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

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

于 2012-04-27T13:47:52.157 回答
5

如果使用 sql 源,已编辑答案以包括获取用户全名。

  1. 注册一个参数,UserID,默认值为

    =用户!用户ID

  2. 在数据集中使用以下查询

    选择域名,全名

    FROM SystemUserBase

    WHERE(域名 = @UserID)

  3. 然后使用

    =Fields!FullName.Value

在你的报告中。

在 CRM 中,用户数据存储在 SystemUserBase 表中,DomainName 列是实际的Domain\Username存储在 User!UserID 中的报表。如果您更喜欢使用视图,请使用FilteredSystemUser视图而不是SystemUserBase表。

对于 fetchxml,请尝试以下操作: operator operator='eq-userid'表示等于当前用户。

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>
<entity name='team'>
<attribute name='name' />
<attribute name='businessunitid' />
<attribute name='teamid' />
<order attribute='name' descending='false' />
<link-entity name='teammembership' from='teamid' to='teamid' visible='false' intersect='true'>
<link-entity name='systemuser' from='systemuserid' to='systemuserid' alias='user'>
    <attribute name='fullname' />
    <attribute name='systemuserid'/>
        <filter type='and'>
        <condition attribute='systemuserid' operator='eq-userid' />
        </filter>
</link-entity>
</link-entity>
</entity>
</fetch>

然后在您的报告中,您可以在表达式中使用以下代码来获取用户全名

=First(Fields!user_fullname.Value, "GetUserData")

其中数据集称为GetUserData

于 2013-04-30T14:23:12.657 回答
0

用户登录名是否足够?即你可以使用类似的东西 ="Generated by " & User!UserID吗?

于 2012-05-02T22:58:54.397 回答