SSRS 随机获取参数错误 - 解决方案是重建报告......然后它再次发生
SSRS randomly gets error for parameter - solution is to rebuild report...then it happens again
我对 SSRS 非常有经验,我已经做了很长时间所以当我看到错误时我知道:
“报告处理期间发生错误。(rsProcessingAborted)
试图设置未在此数据集中定义的数据集参数“@SiteId”。 (rsUnknownDataSetParameter)"
我知道导致此错误的原因并且可以修复它。但是,此错误经常随机发生。我最终做的只是简单地重建项目并重新部署它,几天一切都很好,然后突然又会再次弹出同样的错误。
我知道参数没有问题,因为我有一个 @SiteId 参数,如图所示:
因此,当我收到一封来自用户的“报告已关闭”的电子邮件时,我只是转到我的报告并重建并重新发布,错误就消失了,没有任何其他更改。几天后,当他们想 运行 再次报告时,同样的错误发生了。是什么导致这个问题一遍又一遍地出现。我们 运行ning SQL Server 2016 with SSRS。它发生在我在报告服务器上的任何一份报告中。它不是一个特定的项目,它随机发生在任何项目上。
编辑
我确实注意到,当用户报告此问题时,我会转到报告服务器 url 上报告的“管理”。您可以在该区域找到属性、数据源和参数。当我点击参数时,我看到这个错误:
很明显,有些东西正在破坏参数——这就是我对造成这种情况的原因感到困惑的地方。这可能就是我收到错误消息的原因。因此,重申一份报告是已发表的作品……突然间参数丢失了。用户报告“报告不再有效”我重建并重新部署报告......然后它再次工作一天左右可能超过一天我从未调查过它再次中断需要多长时间(因为这些并不紧急报道)。几天后,用户说报表又死了……如果我使用报表服务器 url 转到报表服务器并单击“管理”,然后由于某种原因单击“参数”参数消失了……导致我再次重新部署。这种情况一遍又一遍地发生。它永远不会结束...
简而言之,您不能在同一 SSRS 服务器上的不同 SSRS 项目之间使用相同的共享数据集名称。
所以在我们的 SSRS“存储库”中,我们有几个不同的 SSRS 项目。这两个项目都非常特定于某些功能。我注意到,每次我部署其中一个 SSRS 项目时,另一个项目的报告都会停止工作。
当用户发来电子邮件说应用程序 A 的报告没有工作时,我会转到应用程序 A 的 SSRS 项目并重新部署它,它会解决问题。几天后,另一个用户说应用程序 B 的报告不起作用,所以我将重新部署应用程序 B 的报告。不知道当我部署 A 的报告时 B 会崩溃,反之亦然部署 B 会破坏 A。
快来看看....这两个项目都有一个名称相同 (dsEmployees) 的共享数据集。名称相同,但这些数据集指向具有不同参数的不同存储过程。那么当您部署并查看后端数据库时,Catalog
table 只有一个 dsEmployees 条目。每次我重新部署时,这都会被其他数据集覆盖,因为名称相同。
在不同的 SSRS 项目中吸取的教训要小心共享数据集名称,它们必须不同。我能够通过 运行 以下查询发现差异:
SELECT
c.Name,
c2.*,
c2.Parameter
FROM
DataSets d
INNER JOIN
[Catalog] c
ON
c.ItemID = d.ItemID
INNER JOIN
[Catalog] c2
ON
c2.ItemID = d.LinkID
WHERE
--one specific report for now
d.ItemID='C3008EF4-E544-48F3-92C1-2222C6148B13'
当报告被声明无效时。然后我将重新部署报告并重新运行我编写的 sql 语句并将行转储到 excel sheet 以进行比较。其中一列是 Parameters
,我注意到参数略有不同。我立刻想到了一些东西,结果就是这样。感谢发表的评论,它帮助我重新审视了这个!这困扰了我多年!
我对 SSRS 非常有经验,我已经做了很长时间所以当我看到错误时我知道:
“报告处理期间发生错误。(rsProcessingAborted) 试图设置未在此数据集中定义的数据集参数“@SiteId”。 (rsUnknownDataSetParameter)"
我知道导致此错误的原因并且可以修复它。但是,此错误经常随机发生。我最终做的只是简单地重建项目并重新部署它,几天一切都很好,然后突然又会再次弹出同样的错误。
我知道参数没有问题,因为我有一个 @SiteId 参数,如图所示:
因此,当我收到一封来自用户的“报告已关闭”的电子邮件时,我只是转到我的报告并重建并重新发布,错误就消失了,没有任何其他更改。几天后,当他们想 运行 再次报告时,同样的错误发生了。是什么导致这个问题一遍又一遍地出现。我们 运行ning SQL Server 2016 with SSRS。它发生在我在报告服务器上的任何一份报告中。它不是一个特定的项目,它随机发生在任何项目上。
编辑
我确实注意到,当用户报告此问题时,我会转到报告服务器 url 上报告的“管理”。您可以在该区域找到属性、数据源和参数。当我点击参数时,我看到这个错误:
很明显,有些东西正在破坏参数——这就是我对造成这种情况的原因感到困惑的地方。这可能就是我收到错误消息的原因。因此,重申一份报告是已发表的作品……突然间参数丢失了。用户报告“报告不再有效”我重建并重新部署报告......然后它再次工作一天左右可能超过一天我从未调查过它再次中断需要多长时间(因为这些并不紧急报道)。几天后,用户说报表又死了……如果我使用报表服务器 url 转到报表服务器并单击“管理”,然后由于某种原因单击“参数”参数消失了……导致我再次重新部署。这种情况一遍又一遍地发生。它永远不会结束...
简而言之,您不能在同一 SSRS 服务器上的不同 SSRS 项目之间使用相同的共享数据集名称。
所以在我们的 SSRS“存储库”中,我们有几个不同的 SSRS 项目。这两个项目都非常特定于某些功能。我注意到,每次我部署其中一个 SSRS 项目时,另一个项目的报告都会停止工作。
当用户发来电子邮件说应用程序 A 的报告没有工作时,我会转到应用程序 A 的 SSRS 项目并重新部署它,它会解决问题。几天后,另一个用户说应用程序 B 的报告不起作用,所以我将重新部署应用程序 B 的报告。不知道当我部署 A 的报告时 B 会崩溃,反之亦然部署 B 会破坏 A。
快来看看....这两个项目都有一个名称相同 (dsEmployees) 的共享数据集。名称相同,但这些数据集指向具有不同参数的不同存储过程。那么当您部署并查看后端数据库时,Catalog
table 只有一个 dsEmployees 条目。每次我重新部署时,这都会被其他数据集覆盖,因为名称相同。
在不同的 SSRS 项目中吸取的教训要小心共享数据集名称,它们必须不同。我能够通过 运行 以下查询发现差异:
SELECT
c.Name,
c2.*,
c2.Parameter
FROM
DataSets d
INNER JOIN
[Catalog] c
ON
c.ItemID = d.ItemID
INNER JOIN
[Catalog] c2
ON
c2.ItemID = d.LinkID
WHERE
--one specific report for now
d.ItemID='C3008EF4-E544-48F3-92C1-2222C6148B13'
当报告被声明无效时。然后我将重新部署报告并重新运行我编写的 sql 语句并将行转储到 excel sheet 以进行比较。其中一列是 Parameters
,我注意到参数略有不同。我立刻想到了一些东西,结果就是这样。感谢发表的评论,它帮助我重新审视了这个!这困扰了我多年!