我正在使用SQL Report Builder,我想调用已经构建的存储过程。 SSRS允许我这样做,但由于公司的要求是建立一个报告模型以允许用户进行他们的临时报告,我需要找到一种方法来包含这些存储过程来编写填充某些表。
有人可以帮我解决这个问题吗?
感谢。
答案 0 :(得分:1)
当您使用SSRS创建报表模型项目时,您将创建一个数据源,然后创建一个数据源视图(DSV),这是一个受限制的表和列表。可用于报告模型的视图。
我们的想法是为报表模型创建一组有限的视图,以便最终用户可以轻松,明确地创建报表。如果最终用户不会成为创建报告的人,则不建议使用。实际上,报表生成器对于高级用户来说功能不够强大,而其他用户不会从中获得很多价值,因为他们无法通过将Excel连接到数据源并创建数据透视表来获得这些价值。
不幸的是,使用报表生成器,您只能使用表格和表格。观点。 这立即意味着复杂的报告不应使用报表生成器。任何花哨的东西都不容易在视图中重现,因为它们不带参数。
如果肯定需要,那么你需要以某种方式从那些现有的存储过程中创建一个视图。 一种方法是将它们转换为使用table valued functions(TVF)。这不是一个简单的过程,因为您仍然需要将TVF合并到一个视图中,它仍然无法获取参数。
Teo Lachev的书“应用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中执行报告并按原样引用存储过程。