运行 SSRS 报告时,我收到一条错误消息“报告处理期间发生错误。数据集 [sprocs 名称] 的查询执行失败”。
此报告的存储过程可以在 SQL 服务器中无错误地执行。它有一个 CTE 查询,该查询使用链接服务器从不同的数据库服务器检索数据。
Windows 日志中没有指向此问题的错误。
我猜想这与链接服务器断开连接有关,但我似乎无法证明情况确实如此,因为我找不到任何指向它的错误,而且存储过程运行良好。此外,频繁打开 SSRS 中出现上述错误的报告以检查它是否正常工作,导致报告服务器瘫痪。
有人能帮忙解决这个问题吗?
答案1
SQL Profiler 无法帮助解决问题。我能够在我们的 Staging SSRS 服务器中测试并运行报告,没有任何错误。我能够使用来自生产的相同数据源凭据运行报告,不太可能出现身份验证问题。
这是在 ReportServer 日志中发现的错误
错误:引发 Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:对数据集“[sprocname]”执行查询失败。,;信息:Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:对数据集“[sprocname]”执行查询失败。---> System.Data.SqlClient.SqlException:命名管道提供程序:管道另一端没有进程。
但是,我们的系统管理员比较了 SQL Server 配置,发现客户端协议在 Staging 和 Production 中的顺序不同。我们将 Production 中的顺序更改为与 Staging 中的顺序相匹配,即共享内存、TCP/IP 和命名管道,而不是命名管道在 TCP/IP 之前。这解决了这个问题,到目前为止,报告运行时没有任何错误。
答案2
使用 SQL 探查器查看 SQL 服务器实际发送和返回的内容。使用跟踪日志,您应该能够确定原因。
报告服务是否在您测试存储过程的同一台服务器上运行?您是直接从 SSRS 界面运行报告,还是将其嵌入另一个应用程序中?
可能是身份验证问题、防火墙问题、双跳 Kerberos 问题。我猜你只能访问其中一个服务器,或者你访问了两个服务器,但无法登录到链接的服务器。
答案3
据我所知,这是身份验证问题,请检查您的报告服务器凭据和链接服务器凭据和权限