我在 Report Builder 中创建了一个报告(称为主要)和一个钻取(称为次要)。其中每一个都有一个 SQL 语句。
在 SQL Server Management Studio 中执行时,SQL 语句按预期工作。
但是,当 Primary.rdl 和 Secondary.rdl 上传到 Report Manager(Internet Explorer 中的 Web 界面)时,它们在运行时不会生成正确的数据。
因此,我认为问题不在于 SQL 语句。我认为这与报告管理器有关。
主 SQL 语句:
该语句从多个表中获取一堆用户数据并检查他们的密码是否可以接受。它会填充密码未通过检查的用户列表。
This is pseudocode so pardon inconsistencies in var names
with details as (
select u.userid
, u.password
, u.firstname
, u.lastname
, u.userdescription
, u.status
, u.lastlog
, dbo.IsPassswordAcceptable(u.userid, u.password) as passStatus
from masterListOfUsers as u
)
select d.*, p.datavalue
from details as d
left join passwordDetailList as p
on p.keyvalue = d.passStatus
and p.datatype = 'ERRORMESSAGE'
where d.passStatus <> 1
and d.passStatus <> -5
and d.status = (@USERSTATUS) -- only user ids in use
;
辅助 SQL 语句:
此语句是一个钻取。运行报告的人可以单击上面列表中的用户 ID。在填充该用户 ID 的联系信息的地方执行钻取。
This is pseudocode so pardon inconsistencies in var names
SELECT
m.userid
, c.address
, c.city
, c.state
, c.zip
, c.cphone
FROM userMasterList AS m
left join userDetailList AS d
ON d.userid = m.userid
left join anotherList as e on d.fullkey = e.fullkey
left join yetAnotherList AS c
WHERE m.userid = @USERID;
预期结果:
当用户运行主节点时,会填充密码错误的用户列表。可以单击每个用户的用户 ID,这会触发辅助节点填充与该用户 ID 关联的位置/联系信息。
实际结果:
单击用户 ID 时,辅助节点无法填充与用户 ID 关联的任何位置/联系信息。这只是偶尔发生。其他时候,它工作正常。
我列出了这些“空”用户 ID,并在 Management Studio 中运行了辅助节点的 SQL 语句,它填充了所有预期的位置/联系信息。
我尝试过的解决方案:
我完全被难住了。我对 SQL 语句进行了三次检查,并在 Management Studio 中对其进行了测试。我已将两个 .rdl 文件重新上传到报告管理器。我已通过报表管理器中的“创建链接报表”选项以及报表生成器的操作 > 转到报表选项中的“创建链接报表”选项将辅助节点重新分配给主节点。
我还可以做些什么?