为什么在 Windows 更新至 SP2 后,我的 Microsoft SQL Server Reporting Services 2005 报表服务器的报表管理器会告诉我“用户登录失败”(rsRPCError)?

为什么在 Windows 更新至 SP2 后,我的 Microsoft SQL Server Reporting Services 2005 报表服务器的报表管理器会告诉我“用户登录失败”(rsRPCError)?

我通过 Windows Update 将现有的 SQL Server 2005 Reporting Services 实例更新为 SP2。现在,当我打开报告管理器时,我收到消息“用户‘Report Server (Sandbox)’登录失败。(rsRPCError)”。

“Report Server (Sandbox)” 是我的 Report Server 用来连接其内部管理数据库(也称为“Report Server (Sandbox)”)的 SQL Server 登录名。Reporting Services 之前可以成功连接。该帐户的密码没有更改;我可以通过 sqlcmd 等方式使用其名称和密码成功连接。

当我运行 Reporting Services 配置管理器并检查数据库连接页面(在数据库设置上)时,一切看起来都很好。报告的数据库版本是 C.0.8.40。我曾尝试摆弄凭据以促使它们以某种方式“重置”。这似乎没有帮助,但该工具一直提示我升级数据库。(我一直告诉它继续。)

怎么回事?我需要彻底清除并重新安装此报告服务器(或至少是其数据库)吗?我想这不会是一件可怕的事情——反正它目前已经坏了,而且我们所有的报告定义都经过整理和源代码控制,以便于重建/重新部署。不过,我还是害怕再次为所有这些事情烦恼。

答案1

最终发现这是数据库版本不匹配的问题,而不是“登录失败”消息所指示的身份验证/授权问题。

我发现数据库版本升级程序中有一个错误:它发出的脚本没有正确引用数据库名称,因此对于像我这样的数据库名称,这些名称往往有很多空格等,它会发出类似USE Report Server (Sandbox)TempDB(而不是USE [Report Server (Sandbox)TempDB]) 的语句,升级会失败。解决办法是让工具发出升级脚本,手动修复它,然后自己应用它。请参阅http://www.eggheadcafe.com/software/aspnet/30860451/database-problem.aspx

这里还有一些提示:

  • 当配置管理器在页面底部向您提供“消息”时,您可以单击某条消息以查看更多详细信息。(没有任何线索可以提示您这一事实;我花了很长时间才意识到,只要我神奇地单击一些不邀请单击的内容,该工具就会向我解释数据库已过期。)
  • 当您要求它为您生成升级脚本时(单击“脚本…”按钮,然后单击左侧的“升级数据库脚本”),它会提示您输入“服务器版本”。这实际上是在要求输入与您尝试升级的数据库版本相对应的 SQL Server Reporting Services 版本,这是一件很尴尬的事情。似乎数据库版本 C.0.8.40 对应于 Reporting Services 2005,而数据库版本 C.0.8.43 对应于 Reporting Services 2005 SP1。(C.0.8.54 对应于 Reporting Services 2005 SP2。)
  • 生成的脚本似乎对部分应用的更新相当稳健,但另一方面,它会很乐意部分更新您的数据库版本。因此,您最好采取预防措施,例如在运行更新脚本之前在内部数据库中开始和提交简单的标记(命名)事务(以便在出现问题时更轻松地进行时间点恢复)、将整个脚本包装在BEGIN TRAN/中COMMIT TRAN并使用 运行它sqlcmd -b等。

相关内容