我在 SSRS 中遇到了一个反复出现的问题,其中“坏”报告会发送给客户。问题是我们的报告包含多个子报告,并且一个或多个子报告将无法处理。当子报告无法处理时,报告会发送错误消息代替子报告并且没有实际数据。
我的问题是,如果子报告失败,有没有办法阻止报告发送?
理想情况下,我希望外部报告只返回一个错误。有没有办法让 SSRS 报告中的错误状态升级到外部范围?是否有我们可以强制执行的编码标准可以防止这个问题?
我们目前同时使用 SSRS 2008r2 和 SSRS 2016。
SQL Server 2008 R2 Reporting Services 会记录谁运行什么报告,存储在 ReportServer 数据库的 ExecutionLogStorage 表中。该历史数据的默认保留期为 60 天。
几个月前,我想在我的几个报告服务器上增加保留期,所以我搜索了如何做到这一点,并找到了几个不同的博客文章,其中说您更新了 ReportServer 数据库中的 ConfigurationInfo 表。具体来说,他们说您将 Value 列设置为 Name = 'ExecutionLogDaysKept' 行的保留天数,如果您将该值设置为 0,则执行历史将无限期保留。所以这就是我所做的,并很快忘记了它。
快进到今天早上,当我对 ExecutionLog 视图运行 who-launched-what-report-when 查询时,很快就没有返回任何行。在调查过程中,我了解到 SSMS GUI,您还可以使用它管理报告执行历史记录;GUI 显然更新了相同的 ConfigurationInfo 行,但它的标签表明将 'ExecutionLogDaysKept' 值设置为 0 实际上转化为“删除早于 0 天的执行日志条目”,或者基本上,“不保留任何今天之前的历史”——与“无限期地保留历史”截然相反。
这在对存储过程 ExpireExecutionLogEntries 的检查中得到证实,该过程引用了“ExecutionLogDaysKept”值,其中注释和代码本身清楚地表明指示无限期历史保留的正确值是 -1,而不是 0。
这些博客的作者将保持匿名,因为他们是我不是特别熟悉的 SQL 人员,因此我不应该如此愉快地遵循他们的建议。我想这篇文章主要是警告不要犯同样的错误;但是,我确实有几个问题:
编辑:向那些未透露姓名的博客作者道歉,因为似乎错误的保留设置信息实际上起源于2008R2在线图书中的至少一个位置。它仍然存在于2016年的BOL 中——不确定是否仍然与底层程序代码脱节。提交了 Microsoft Connect条目,要求更正文档。
好的。我已经在 Internet 上搜索有关尝试解决此问题的信息,但没有发现任何与我的情况有关的信息。我从这里开始,引导我到这里,引导我查看用于 HTTP 的 netsh 命令。
理解:我使用 HTTP/80 访问报表管理器或 Web 服务没有任何问题。
我的问题是严格让 HTTPS/443 工作并打开 HTTP/80 使用的完全相同的页面。我得到的只是HTTP Error 404
。
10.50.4270.0
netsh
SSL 证书绑定在 IP:port 443 上。HKLM:\SYSTEM\CurrentControlSet\services\HTTP\Parameters\SslBindingInfo
存在于0.0.0.0:443
.netsh
show iplisten
没有显示任何东西,所以我add iplisten ipaddress=0.0.0.0
,但这并没有影响任何东西rsreportserver.config
的SecureConnectionLevel
设置为value="0"
我被卡住了,我在这里想做什么或检查什么?
编辑
我刚刚在全新的服务器上完成了全新安装,结果相同。
当前环境
我在这里遇到了一些麻烦,我在一台服务器上安装了 Reporting Services,在另一台服务器上安装了 SQL Server 数据库引擎。
用户正在连接到 Reports Manager,它显然指向安装 Reporting Services 的服务器。
用户使用通用登录名(报表服务器上的本地管理员帐户)连接到报表管理器。
但是,当用户单击报告管理器上的报告生成器按钮时,它最初无法启动,并抱怨“应用程序无法检索文件。身份验证失败。”
经过大量研究后,我发现,即使用户在连接到报表管理器时输入了本地帐户的凭据,但当他们单击“报表生成器”按钮时,会从其 Windows 帐户中获取凭据,因此 ClickOnce 应用程序无法对用户进行身份验证并且无法启动。
我通过允许Basic Authentication
报告服务器和允许Anonymous Authentication
报告生成器更改了此行为。
现在,当用户单击而Report Builder
不是仅从当前用户 Windows 帐户中选择凭据而不是报表生成器时,它会提示输入凭据,用户将传递报告服务器上的本地管理员帐户的凭据,并且 ClickOnce 应用程序将按预期下载。
问题
现在报表生成器已正常启动,我可以右键单击设计器左窗格中的数据源文件夹,浏览可用的数据源,测试连接(显示测试成功)。但是,一旦我单击数据集并尝试添加新数据集,它就会抛出一条错误,提示“身份验证失败,无法连接到数据源”。
尽管在最后一步中连接测试成功,但在这个阶段它失败了。
重要的提示
SQL Server没有外部IP,只能从报告服务器上看到。这可能是连接失败的原因吗?
我的意思是,报表生成器在启动时是否会尝试获取与 SQL Server 的直接连接?
或者还有什么我错过的吗?
非常感谢任何指针任何建议,谢谢。