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