SQL2005报表服务不能被启动问题总结报告
由于以前安装过SQL2005 BETA2版本,后来再装上SQL2005正式版后发现报表服务不能启动
使用url地址 http://localhost/reportserver访问时报告下面信息:
The report server cannot open a connection to the report server database. A connection to the database is required for all requests and processing. (rsReportServerDatabaseUnavailable) Get Online Help
****SQL Server does not exist or access denied.****
经过诊断,这一问题可以通过命令行解决,如下:
rsconfig -c -s 机器名 -a sql -p SQL用户名(如sa) -u SQL用户名密码(如sa) -d 你的报表服务器数据库名(如reportserver)
当然,如果你的SQLSERVER2005不是混合验证,你可以改变一下上面的参数,如
rsconfig -c -s 机器名 -a windows -p win用户名(如myserver\administrator) -u 用户名密码(如123) -d 你的报表服务器数据库名(如reportserver)
这样,如果上面命令没有报错的话,你再通过http://localhost/reportserver访问时应该是不会报不能连接到SQLSERVER 数据库问题了
但是,我通过http://localhost/reportserver访问是,报告下面信息:
报表服务器 Windows 服务“ReportServer”未运行。必须运行该服务才能使用报表服务器。 (rsReportServerServiceUnavailable)
真冤,那我就启动报表服务把,可是启动的时候它报错,说它启不起来,要我去事件里看看,这不玩我么?
我就去事件里瞧瞧,果然发现3个大红叉,内容如下:
红叉1:
The Remote Procedure Call (RPC) service failed to start.
红叉2:
Service cannot be started. Microsoft.ReportingServices.Diagnostics.Utilities.UnknownUserNameException: 无法识别用户名或组名“LocalSystem”。
at Microsoft.ReportingServices.Library.Native.NameToSid(String name)
at Microsoft.ReportingServices.Library.ServiceAppDomainController.StartRPCServer(Boolean firstTime)
at Microsoft.ReportingServices.Library.ServiceAppDomainController.Start(Boolean firstTime)
at Microsoft.ReportingServices.NTService.ReportService.OnStart(String[] args)
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
红叉3:
The report server cannot decrypt the symmetric key. Most likely, the service account or password has changed. To continue, run rsconfig.exe to update the report server account information.\r\n
红叉1报的莫明奇妙,RPC服务启动故障,这SQL2005更年期了把,明明RPC服务好好的启着
红叉2报的更加奇怪,没事用这LocalSystem破标志干嘛,我又没有设置你,无法识别,
红叉3竟然提供了一个解决方案,说要我再用rsconfig.exe试试,整人怎么能这样呢?rsconfig.exe总共才几个参数,我都玩了几百遍了,还要我玩,会不会啊,又是一个脑痴,不知道就不知道,还要给个什么建议干嘛,引我入歧途啊
不过微软还是挺实在的,我把红叉2的内容往GOOGLE上一搜,就发现微软的官方网站上有这个问题的解决办法,网址如下:
http://support.microsoft.com/kb/911846/en-us
这文章大意就是说:
确实有这个问题存在,这个原因是在RSreportserver.config文件中的WebServiceAccount属性没有指好导致,当这个属性没有指好时,它就会使用ASPNET使用的帐号,然而当前ASPNET使用的这个帐号它不存在于域控制器中的,缺省情况下这个ASPNET使用的帐号就是应该在域控制器中,如使用IWAM_ComputerName帐号
哎,看上面的话不就是怪我改动了ASPNET的使用帐号,所以报表服务启不起来,明显推卸责任
不多说了,看看微软的解决方法把,其实很简单,打开RSreportserver.config文件,这文件所处的目录如下:
Drive:\Program Files\Microsoft SQL Server\MSSQL.x\Reporting Services\ReportManager
然后找下面标志
<WebServiceAccount></WebServiceAccount>
把它改成下面的样子:
<WebServiceAccount>IWAM_ComputerName</WebServiceAccount>
好了,存盘
重启报表服务,历时3小时16分零16秒,报表服务启动终于成功.
但并不意味着可以成功访问了,我再访问http://localhost/reportserver/时出现下面错误:
报表服务器无法打开与报表服务器数据库的连接。所有请求和处理都要求与数据库建立连接。 (rsReportServerDatabaseUnavailable) 获取联机帮助
Login failed for user 'CRSERVER\IWAM_CRSERVER'.
这个问题报告到挺实在的,就是说当前这个用户不能访问SQLSERVER数据库,那行,我就为这个用户建立一个SQL登录
却发现其实这个用户根本就不能建登录,意味着它也不是域帐号,哎,忘了说了,我的时WIN2003系统,微软上面那篇文章讲的是2000的
好把,反正知道问题所在,先把ASP.NET的运行帐号改为NT AUTHORITY\LOCAL SERVICE,然后在上文件中把
<WebServiceAccount></WebServiceAccount>
改成下面的信息
<WebServiceAccount>NT AUTHORITY\LOCAL SERVICE</WebServiceAccount>
这下应该没错了把,可是郁闷的是还是有错,上个错误没有了,下个错误出来了,如下:
报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥。必须还原备份密钥或删除所有加密的内容。有关详细信息,请查阅该文档。 (rsReportServerDisabled) (rsRPCError) 获取联机帮助
不正确的数据。 (Exception from HRESULT: 0x80090005)
上帝啊,谁来拯救我把,此刻我有多少脑细胞因窒息而死亡,灰心啊,难不成辛苦写了这么多却最终还是没有解决?
不甘心,再折腾一把,记得SQL2005有一个报表配置管理器,去里面玩玩
发现有一个加密的一栏,不管了,它不是说不能解密么,那我先把它删除,删除成功了,然后再change一下生成一个新的,OK
在重新使用http://localhost/reportserver访问,幸喜惹狂啊,什么错也没有了
IE返回界面如下:
localhost/ReportServer - /
--------------------------------------------------------------------------------
----------------------
Microsoft SQL Server Reporting Services 版本 9.00.1399.00
大功告成!