在SSRS 2008中添加,删除或编辑用户的权限会引发错误“”响应不是格式良好的XML

我完全被一个非常固执的问题困住:当我试图采取任何行动(添加,删除,编辑)在SSRS 2008 UI上报表的属性页的安全选项卡中,我得到一个通用的错误。 它所说的是这样的: 响应不是格式良好的XML。

挖掘SSRS安装根目录下的LogFiles文件夹,我看到:

angular色分配无效。 angular色分配或者为空,指定已经在当前项目的现有angular色分配中使用的用户或组名称,或者指定同一用户或组的重复angular色。 ReportManager_0-1!32c!07/23 / 2011-15:03:33 :: e错误:响应不是格式良好的XML。 ReportManager_0-1!32c!07/23 / 2011-15:03:33 :: e错误:HTTP状态码 – > 500 ——-细节——– System.InvalidOperationException :响应不是格式良好的XML。 —> System.Xml.XmlException:发生意外的文件结束。 以下元素未closures:消息,详细信息,soap:Fault,soap:Body,soap:Envelope。 3号线,位置5470。

在System.Xml.XmlTextReaderImpl.Throw(exceptione)

在System.Xml.XmlTextReaderImpl.ThrowUnclosedElements()

在System.Xml.XmlTextReaderImpl.ParseElementContent()

在System.Xml.XmlLoader.LoadNode(布尔skipOverWhitespace)

在System.Xml.XmlLoader.ReadCurrentNode(XmlDocument doc,XmlReader reader)

在System.Xml.XmlDocument.ReadNode(XmlReader阅读器)

在System.Web.Services.Protocols.SoapHttpClientProtocol.ReadSoapException(XmlReader阅读器)

在System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage消息,WebResponse响应,streamresponseStream,布尔asyncCall)

在System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object [] parameters)

—内部exception堆栈跟踪结束—

在System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object [] parameters)

在Microsoft.SqlServer.ReportingServices2005.ReportingService2005.SetPolicies(String Item,Policy [] Policies)

在Microsoft.SqlServer.ReportingServices2005.RSConnection.SetPolicies(String Item,Policy [] Policies)

在Microsoft.ReportingServices.UI.ImageTextButton.RaisePostBackEvent(String eventArgument)

在System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)

在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)库!ReportServer_0-2!a14!07/23 / 2011-15:03:33 ::调用GetSystemPropertiesAction()。 Reporter_0-1!32c!07/23 / 2011-15:03:33 :: e错误:ShowErrorPageexception:System.Threading.ThreadAbortException:线程被中止。 System.Threading.Thread.AbortInternal()在System.Threading.Thread.Abort(对象状态信息)在System.Web.HttpResponse.End()在Microsoft.ReportingServices.UI.ReportingPage.ShowErrorPage(stringerrMsg)在系统。在Microsoft.ReportingServices.UI.ReportingPage.ShowErrorPage(String errMsg)System.Web.HttpResponse.End()System.Threading.Thread.Abort(对象stateInfo)Threading.Thread.AbortInternal()

当我运行DBCC CHECKDB时,数据库(ReportServer和ReportServerTempDB)出来了。

此错误阻止我执行以下任何操作:
1.使用“编辑项目安全性”报告或文件夹
2.从主文件夹安全页面中删除用户名称
3.使用“新angular色分配”添加新用户

真奇怪的是,这3个动作中的一部分在一些报告文件夹中起作用。 在那些工作和没有工作的人之间我没有什么共同之处。

有任何想法吗??

此问题已得到解决!

根本原因:有一个用户在Home文件夹下以某种方式添加了三次到四个不同的angular色。 使用与Home(inheritance)相同的权限的任何子文件夹遭受相同的后果。 为什么SSRS首先允许这个标记或者在错误日志中没有标记呢?

解决scheme:删除SSRS UI上用户的重复项(3项中的2项)。

得到教训:
1.几次阅读每个错误,但不要被最严重的错误带走
2.尝试并从原因中分离症状(在这种情况下,存在重复的ID是原因,但在错误日志中,您将看到大量语言,如“意外的文件结束已经发生”,在压力的情况下可能容易误导送你一个兔子洞!
采取任何build议,你得到一撮盐,但审查妥善

如果可能,我会:

  1. 从SRSS导出报告
  2. 卸载SRSS
  3. 删除/重命名SRSS数据库(备份也是一个好主意)
  4. 创build一个新的SRSS实例
  5. 再次添加所有报告(如果可以,手动)并尝试configuration首选项。