环境:windows 2008 + MS SQL 2008 sp2
场景:SQL server 服务器打完补丁之后,Reporting Serverces无法启动报错如图所示
错误产生原因(官方解释):
发生此问题的原因是无法检索受信任的和不受信任的证书信任列表(CTL)。如果系统无法访问Windows Update,或者是由于系统未连接到Internet,或者是因为Windows Update被防火墙规则阻止,则网络检索将超时,服务才能继续其启动过程。在某些情况下,此网络检索超时可能会超过30秒的服务启动超时。如果服务无法在30秒后报告启动已完成,则服务控制管理器(SCM)将停止该服务。
错误截图:
根据网上有以下三个决解方案:
方案一:
- 在本地组策略编辑器的“ 计算机配置”节点下,双击“ 策略”。
- 双击Windows设置,双击安全设置,然后双击公钥策略。
- 在详细信息窗格中,双击“ 证书路径验证设置”。
- 单击“ 网络检索” 选项卡,单击以选中“ 定义这些策略设置”复选框,然后单击以清除“ Microsoft根证书程序中的自动更新证书(推荐)”复选框。
- 单击“ 确定”,然后关闭“本地组策略编辑器”。
方案二:
- 单击“ 开始”,单击“运行”,在“ 打开”框中键入regedit,然后单击“ 确定”。
- 在注册表中找到‘SystemCertificates’
- 右键单击AuthRoot,选择新建,然后单击DWORD。
- 键入DisableRootAutoUpdate,然后按Enter。
- 右键单击“ DisableRootAutoUpdate”,然后单击“ 修改”。
- 在“ 数值数据”框中,键入1,然后单击“ 确定”。
- 在文件菜单上,单击退出。
方案三:
- 单击“ 开始”,单击“运行”,在“ 打开”框中键入regedit,然后单击“ 确定”。
- 找到并选择以**册表子项:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control
- 右键单击“ 控件”,指向“ 新建”,然后单击“ DWORD”。
- 在“ 新值”框中,键入ServicesPipeTimeout,然后按Enter。
- 右键单击ServicesPipeTimeout,然后单击“ 修改”。
- 单击“ 十进制”,键入要等待服务超时的毫秒数,然后单击“ 确定”。
例如,要在服务超时之前等待60秒,请键入60000。 - 在“ 文件”菜单上,单击“ 退出”,然后重新启动计算机。
以上三个方案都进行了测试,并不能决解我的问题,继续找原因
一、打开SQL 配置管理器 找到SQL Server Reporting Services 打开
二、根据存放路径进入报表服务的存放目录、找到ReportingServiceService.exe 用管理员身份运行
三、在Reporting Service的Log文件夹中找到错误信息(这个是服务运行报错的主要原因)
四、决解方案
断网的情况下:
下载最新的CTL,请使用以下更新的URL:
- http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab
- http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab
或:连接网络直接运行Server ReportingService