无法在SSRS中编辑或删除计划报告

时间:2009-06-03 07:43:13

标签: sql-server reporting-services

在SSRS中编辑和删除预定报告时,我当前收到以下错误:“只允许sysadmin角色的成员更新或删除其他登录所拥有的作业。”

我已尝试将作业所有者更改为SSRS使用的服务帐户,我已将用户添加为系统管理员,并且我已检查Reporting Services本身的受限帐户的用户和密码。没有什么能有所作为。

报告服务日志只显示:

w3wp!library!a!06/03/2009-01:23:42:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException: An internal error occurred on the report server. See the error log for more details., ;
 Info: Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException: An internal error occurred on the report server. See the error log for more details. ---> System.Data.SqlClient.SqlException: Only members of sysadmin role are allowed to update or delete jobs owned by a different login.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.ReportingServices.Library.InstrumentedSqlCommand.ExecuteNonQuery()
   at Microsoft.ReportingServices.Library.SqlAgentScheduler.DeleteTask(Guid id)
   at Microsoft.ReportingServices.Library.SchedulingDBInterface.UpdateTaskProperties(Task task, Boolean updateSqlAgentSchedule)
   at Microsoft.ReportingServices.Library.TimedSubscriptionHandler.ValidateSubscriptionData(Subscription subscription, String subscriptionData, UserContext userContext)
   at Microsoft.ReportingServices.Library.SubscriptionManager.ValidateSubscriptionData(Subscription subscription, String eventType, String subscriptionData)
   at Microsoft.ReportingServices.Library.SubscriptionManager.SetSubscriptionProperties(Guid id, String eventType, String matchData, ExtensionSettings extensionSettings, String description, ParameterValueOrFieldReference[] parameters, DataRetrievalPlan dataSettings)
   at Microsoft.ReportingServices.Library.SetSubscriptionPropertiesAction.PerformActionNow()
   at Microsoft.ReportingServices.Library.RSSoapAction`1.Execute()
   --- End of inner exception stack trace ---

2 个答案:

答案 0 :(得分:5)

我发现了问题。 IIS中用于Reports Manager的SSRS应用程序池作为网络服务用户运行,即使使用该服务的应用程序以受限用户身份登录,该用户也被用作连接上下文。

解决方案:

  • 将应用程序池更改为具有SysAdmin权限或DB中作业所有权的用户
  • 或者将网络服务用户添加为SQL用户和SysAdmin

答案 1 :(得分:0)

我在SSRS 2005中也遇到了同样的问题。 并非所有报告都像这样,但是已经删除了无法更新/删除的奇数订阅。 IIS在作为内置网络的一台服务器上运行,而表在单独的群集服务器上。我无法授予IIS内置帐户对远程数据库服务器上的表的权限。 我在目录中找到报告的itemid,在subscriptions表中匹配report_oid并删除具有受影响的订阅itemid的行时感到很幸运。 听起来很糟糕,但是在此之后,我可以重新创建订阅,世界上一切都很好。