我正在使用 SQL Report Builder,我想调用已经构建的存储过程。SSRS 允许我这样做,但由于公司的要求是建立一个报告模型以允许用户进行他们的临时报告,我需要找到一种方法来包含这些存储的过程,这些过程是为了填充一些表而编写的。
谁能帮我解决这个问题?
谢谢。
当您使用 SSRS 创建报表模型项目时,您会创建一个数据源,然后创建一个数据源视图 (DSV),它是可用于报表模型的表和视图的受限列表。
这个想法是为报表模型创建一组有限的视图,以便最终用户可以简单且明确地创建报表。如果最终用户不是创建报告的人,则不建议这样做。在实践中,报表生成器对于高级用户来说功能不够强大,其他用户不会从中获得很多价值,而这些价值是他们通过将 Excel 连接到数据源和创建数据透视表时无法获得的。
不幸的是,使用报表生成器,您仅限于表格和视图。这立即意味着复杂的报表不应该使用报表生成器。任何花哨的东西都不容易在视图中重现,因为它们不带参数。
如果确实需要,那么您需要以某种方式从那些现有的存储过程中创建一个视图。一种方法是将它们转换为使用表值函数(TVF's )。这不是一个简单的过程,因为您仍然需要将 TVF 合并到视图中,并且它仍然无法获取参数。
Teo Lachev 的书 'Applied Microsoft SQL Server 2008 Reporting Services' 在第 312 页列出了另一种解决方法。您可以使用 OPENROWSET 创建命名查询。这依赖于您已经为即席分布式查询启用了 SQL Server(服务器选项)。他举的例子:
SELECT a.* FROM OPENROWSET('SQLNCLI', 'Trusted_Connection=yes',
'[AdventureWorks].[dbo].uspGetManagerEmployees 16') AS a
这实际上对您来说似乎是最少的工作量。
最好的选择是只在 SSRS 中进行报告并按原样引用存储的过程。