如何解决 RS 错误“这可能是由于数据库内的连接失败、超时或磁盘空间不足造成的。”?

问题描述 投票:0回答:1

将 ReportServer 数据库从 2014 年迁移到 2019 SQL Server Standard 后,我运行了 Report Server 配置管理器(与 SQL Server 在同一框上),数据库 --> 更改数据库 --> 选择现有的报表服务器数据库 -->使用 LocalSystem 作为用户名从下拉列表中选择 ReportServerTest,并将身份验证类型设置为服务凭证。服务帐户设置为 LocalSystem。 NT AUTHORITY\SYSTEM 和 NT SERVICE\SQLServerReportingServices 都是 ReportServerTest 和 ReportServerTesTempDB 数据库的 DB_Owner。这两个帐户也属于本地管理员组。但是,在访问 Web 服务 URL 时,我不断收到以下错误。

报表服务器数据库内发生错误。这可能是由于数据库内的连接失败、超时或磁盘空间不足造成的。 (rsReportServerDatabaseError) 获取联机帮助 执行超时已过期。操作完成之前超时时间已过,或者服务器未响应。 等待操作超时

我可以创建一个新的数据库,它工作得很好。但是,仅当我选择从 2014 SQL Server Enterprise Edition 恢复的现有 ReportServer 数据库时,才会出现此错误。我看过这个thread,但它在我的情况下不起作用。

sql-server reporting-services sqlreportingservice
1个回答
0
投票

如果您遇到此错误并且很难解决它(就像我一样),最终的解决方案是按照此处的过程进行操作: https://learn.microsoft.com/en-us/sql/reporting-services/security/create-the-rsexecrole?view=sql-server-ver16

我的案例中的问题是缺少 Master 和 MSDB 数据库上 RSExecRole 角色的权限。简而言之,您可以创建角色(如果不存在),或者修改其权限(如果存在)。这是实现它的 SQL:

USE master;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
    CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.xp_sqlagent_enum_jobs TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_is_starting TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_notify TO [RSExecRole];
GO
USE msdb;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
    CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.sp_add_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobserver TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobstep TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_delete_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_verify_job_identifiers TO [RSExecRole];
GRANT SELECT ON dbo.syscategories TO [RSExecRole];
GRANT SELECT ON dbo.sysjobs TO [RSExecRole];
GOa
© www.soinside.com 2019 - 2024. All rights reserved.