我已经在Report Builder中创建了一个报告(称为主数据库)和钻取(称为辅助数据库)。每个都有一个SQL语句。
在SQL Server Management Studio中执行时,SQL语句按预期工作。
但是,将Primary.rdl和Secondary.rdl上传到报表管理器(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文件重新上传到了报表管理器。我已经通过“报表管理器”中的“创建链接的报表”选项将辅助数据库分配给主数据库,还通过报表构建器的“操作”>“转到报表”选项中的“还”。
我还能做什么?
我已经在Report Builder中创建了一个报告(称为主数据库)和钻取(称为辅助数据库)。每个都有一个SQL语句。在SQL Server Management Studio中执行时,SQL语句...
这实际上不是答案,而是一列在相同情况下我将要进行的工作。
经过数小时的修改,最终导致问题是某些查询工具(而不是SQL语句本身)已将所有开头和结尾空格的userID修剪掉了。因此,当在报表管理器中运行最终报表时,将使用多余的空格查询数据,导致找不到数据。
修剪数据点后已解决此问题。
固定的辅助SQL语句: