我在 SSRS 中继承了一个非常奇怪的异常。使用 2019 创建了一个新 SSRS 实例,它似乎使用与之前的 2016 实例相同的 ReportServer DB。这样做可能是为了避免移植数千份报告和相关项目。
2016 实例似乎仍在运行,但是,用于访问 ReportingService db 的帐户不再有效,因此任何使用 2016 URL 访问报告的尝试都会以“无法访问报告服务器数据库”结尾。
当我访问 2019 年的报告时,我可以在报告管理器中呈现它。
When I invoke the same report, using the 2019 instance's url, through a wcf service call to ReportService2010.Render(), I get the same error as if I were accessing the services vis the 2016 instance.
Alos, I know the 2016 version is trying to render the call made to 2019 because the log information about the render attempt and "can't connect to report server database" error only show up in 2016's error log.
I have re-checked the iis log and see the that the wcf service is calling the 2019 server to request the render with 200 result (it is fire and forget so a 200 is always returned if the endpoint is accessible).
It seems like the wcf is in fact calling the 2019 instance and requesting a report, however, the logging for that request is being done over at the 2016 instance of SSRS.
Could this be something not well configured in the report sever database?
答案1
This was user error. The app.config for the WCF service was pointing to the correct instance, hence the correct logging messages. The web.config in the API project, which referenced all WCF services, had two app settings with the same key. One key was incorrect and that was used for the ReportExecution endpoint binding.
I assumed the configs were pristine.