使用存储过程将两个数据源合并为 SSRS 报告中的一个数据源

问题描述 投票:0回答:1

我正在尝试构建 SSRS 报告,该报告将从两个不同的服务器获取数据。

我已经创建了一个存储过程,该存储过程在 Management Studio 中运行时可以正常工作,但是当我从 SSRS 报表生成器调用它时,该存储过程不起作用。

这是我的存储过程中的 SQL 查询:

Select 
    serv1.PatientName, serv1.DoctorName,
    serv2.HospitalName, serv2.DoctorDegree 
from 
    server1.database1.tblPatient serv1
inner join 
    server2.database2.tbldoctor serv2 on serv2.PatientID = serv1.PatientID
where 
    serv2.PatientID = 2

请考虑以上查询只是示例。由于存储过程工作得很好。我还创建了两个连接完美的数据源。

主要问题是如何将两个数据源连接到 SSRS 报告中的单个数据源?

sql-server reporting-services dataset ssrs-2012 sqldatasource
1个回答
0
投票

这确实需要在 SSRS 之外进行管理。在 SSRS 中将多个数据源联合到单个表中的技术都不是很好或值得推荐的。因此,如果您可以直接从一台服务器查询到另一台服务器,那么这是最好的选择。

SSRS 在这里没有引入额外的限制,执行查询的是数据库本身,因此如果您已经将此查询封装在存储过程中,并证明它在通过 SSMS 执行时有效,那么唯一的另一个变量是安全上下文。因此,请检查 SSRS 连接的用户帐户是否已被授予与您测试的用户帐户相同的权限,或者使用 SSRS 帐户登录 SSMS 以验证存储过程是否可以执行。

要考虑的另一件事是,当您在 SMS 中对此进行测试时,您是否在 SSRS 报告连接到的同一服务器上进行测试?如果两个环境中的安全上下文相同,则没有理由这不起作用,只需确保您正在将苹果与苹果进行比较即可。

回复:当我从 SSRS 报告生成器调用相同的存储过程时,它不起作用

不起作用非常模糊,您可以提供错误消息或解释结果吗? SQL Server 通常提供非常简洁的错误消息,我们可以使用它们来识别任何失败的具体原因。

替代解决方案

SQL Server 2016 引入了一个名为“外部表”的新概念,引入该概念是为了方便调用其他数据源(不仅仅是 SQL SERVER),就好像它们是主数据库中的表一样。您当然可以使用它来连接其他 SQL 数据库。这是一个抽象层,可能不会改善您当前的问题,但如果您仍然坚持这一点,它可能值得一看;)

© www.soinside.com 2019 - 2024. All rights reserved.