【问题标题】:Dynamics CRM Report doesn't show dataDynamics CRM 报告不显示数据
【发布时间】:2015-02-07 19:59:34
【问题描述】:
我遇到了一个问题,当我将自定义报告上传到 Dynamics CRM 时,报告中没有显示任何数据。在我的报告中,我使用了存储在名为“CustomReports”的单独数据库中的存储过程。我已经做了一些测试,看看我是否可以查明究竟是什么导致了这个问题,但不幸的是我没有运气。
以下是我尝试过的测试列表:
- 使用我的“CustomReports”数据库上传了一份报告,以访问来自 CRM 过滤视图的数据。 -- 没有返回数据
- 在我们的报告管理器中运行这个准确的报告 -- 数据返回
- 使用我的“CustomReports”数据库上传报告以访问来自 CRM 未过滤视图的数据 -- 数据返回
- 使用 CRM 数据库和过滤视图上传了一份报告。 -- 数据返回
在我运行上面的测试 4 之前,我认为这可能与 CRM 安全模型有关。现在我完全被难住了。为什么当我从自定义数据库调用使用过滤视图的存储过程时,它不显示结果,但是当我使用 CRM 作为数据源编写相同的查询时,它确实返回结果?如果有人遇到过类似情况或对如何解决此问题有想法,将不胜感激。
【问题讨论】:
标签:
sql-server
reporting-services
dynamics-crm
dynamics-crm-2013
【解决方案1】:
由于它正在访问 CRM 过滤视图,因此 SQL 用于从自定义数据库访问过滤视图的用户将对其进行安全调整。我不相信基于 CRM 的报告会以运行报告的 CRM 用户身份访问指向 CustomReports 的数据源点。因此,您需要确保 SSRS 和 SQL 最终使用的任何用户帐户都是 CRM 中的有效用户,并且具有相关数据的读取权限。
如果您可以使用第 4 步访问数据,这是将数据导入报告的首选且受支持的方法。我知道传统上我们想为报告编写存储过程,但这超出了 Dynamics CRM 模型。假设您没有使用在线 CRM,但您引入了更多的复杂性,而这对于 CRM 没有很好的记录,通常可以做到这一点。
【解决方案2】:
NickNow 的回复帮助我找到了问题所在。正如他所说,我的 CRM 用户的用户凭据没有传递到我的 CustomReport 数据库,因为我使用的是集成安全连接类型到该数据源。结果,我相信我以 CRM 应用服务用户的身份连接到数据库,该用户不是实际的 CRM 登录用户,因此 CRM 安全模型从我的报告中过滤掉了所有数据。
我解决这个问题的方法是将我的 CRM 数据库设置为我的数据源,而不是我的 CustomReport 数据库。然后在我的报告查询中,我从我的 CustomReport 数据库中执行了我的存储过程。所以我的查询是:
EXEC CustomReport.dbo.StoredProcedure
这使数据显示在我的报告中。