SSRS Web 服务 URL 提供错误 (500)
SSRS Web Service URL Provides an Error (500)
当我尝试访问 SSRS Web 服务 URL(例如 http://SERVERNAME:1234/ReportServer/
)时,它向我提供错误 500。但是,Web 门户 URL(http://SERVERNAME:1234/Reports/
) 工作得很好。它甚至为 SQL 服务器报告服务提供了 UI。
到目前为止,我已经尝试重新安装 SSRS,更改端口、帐户和数据库,但都没有成功(Reporting Services 服务是 运行)。我真的没有想法,微软的文档关于这个特定问题很糟糕,因为它建议尝试修改 NETWORK SERVICE 帐户权限,这可以在添加 Windows 功能之一(我可以添加,可以仅在企业版 WIndows 10).
有没有人遇到过这个问题或设法找到解决方法?
SSRS的实例有两个Web应用程序,它们是非常独立的。通常他们有这样的网址:
在您的情况下,似乎第一个已配置并正常工作,第二个失败。
可以在存储在 SSRS 实例文件夹中的日志文件中找到失败的原因,例如:
D:\SQLData\MSRS13.MSSQLSERVER\Reporting Services\LogFiles
此路径可以不同,具体取决于在初始安装期间选择的实例目录。可以通过打开任务管理器找到文件位置 ReportingServicesService.exe:
然后,在 LogFiles 目录中打开最新的日志文件并检查类别为 ERROR
的消息,例如:
ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: , Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset 'RequestTypeList'. ---> System.Data.SqlClient.SqlException: Invalid object name 'dbo.FactHistoricTrend'.
Could not use view or function 'dbo.FactFlatSSRS_Trend' because of binding errors.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at Microsoft.ReportingServices.DataExtensions.SqlCommandWrapperExtension.ExecuteReader(CommandBehavior behavior)
at Microsoft.ReportingServices.OnDemandProcessing.RuntimeLiveQueryExecutor.ExecuteReader(IJobContext jobContext, DataSourceErrorInspector errorInspector, String commandText)
--- End of inner exception stack trace ---;
这样你就知道你的ReportServer web service报错500的原因了
虽然我会将亚历山大的 post 标记为答案,因为它很好地说明了如何调试问题,但我 post 实际问题是权限 - 我必须提供具有 SSRS 根文件夹的 rwx 权限的网络服务帐户(在我的例子中,它是 E:\Program Files\Microsoft SQL Server Reporting Services
;属性 -> 安全 -> 编辑...)。
当我尝试访问 SSRS Web 服务 URL(例如 http://SERVERNAME:1234/ReportServer/
)时,它向我提供错误 500。但是,Web 门户 URL(http://SERVERNAME:1234/Reports/
) 工作得很好。它甚至为 SQL 服务器报告服务提供了 UI。
到目前为止,我已经尝试重新安装 SSRS,更改端口、帐户和数据库,但都没有成功(Reporting Services 服务是 运行)。我真的没有想法,微软的文档关于这个特定问题很糟糕,因为它建议尝试修改 NETWORK SERVICE 帐户权限,这可以在添加 Windows 功能之一(我可以添加,可以仅在企业版 WIndows 10).
有没有人遇到过这个问题或设法找到解决方法?
SSRS的实例有两个Web应用程序,它们是非常独立的。通常他们有这样的网址:
在您的情况下,似乎第一个已配置并正常工作,第二个失败。 可以在存储在 SSRS 实例文件夹中的日志文件中找到失败的原因,例如:
D:\SQLData\MSRS13.MSSQLSERVER\Reporting Services\LogFiles
此路径可以不同,具体取决于在初始安装期间选择的实例目录。可以通过打开任务管理器找到文件位置 ReportingServicesService.exe:
然后,在 LogFiles 目录中打开最新的日志文件并检查类别为 ERROR
的消息,例如:
ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: , Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset 'RequestTypeList'. ---> System.Data.SqlClient.SqlException: Invalid object name 'dbo.FactHistoricTrend'.
Could not use view or function 'dbo.FactFlatSSRS_Trend' because of binding errors.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at Microsoft.ReportingServices.DataExtensions.SqlCommandWrapperExtension.ExecuteReader(CommandBehavior behavior)
at Microsoft.ReportingServices.OnDemandProcessing.RuntimeLiveQueryExecutor.ExecuteReader(IJobContext jobContext, DataSourceErrorInspector errorInspector, String commandText)
--- End of inner exception stack trace ---;
这样你就知道你的ReportServer web service报错500的原因了
虽然我会将亚历山大的 post 标记为答案,因为它很好地说明了如何调试问题,但我 post 实际问题是权限 - 我必须提供具有 SSRS 根文件夹的 rwx 权限的网络服务帐户(在我的例子中,它是 E:\Program Files\Microsoft SQL Server Reporting Services
;属性 -> 安全 -> 编辑...)。