案例環境:
啟動一台數據庫服務器(Windows Server 2003)的Reporting Service(SQL Server 2008 R2)服務時,出現如下錯誤信息:
System.InvalidOperationException: Cannot start service ReportServer on computer 'xxx'. ---> System.ComponentModel.Win32Exception: The service did not respond to the start or control request in a timely fashion
--- End of inner exception stack trace ---
at System.ServiceProcess.ServiceController.Start(String[] args)
at System.ServiceProcess.ServiceController.Start()
at ReportServicesConfigUI.Panels.ServerInformationPanel.StartStopServiceTask(Boolean start)
從網上搜索了一些資料后發現:出現這個錯誤是因為安裝了MS12-070 security patch (http://support.microsoft.com/kb/2716429) 導致:因為安裝了這個安全補丁后,當.NET應用程序啟動時, .NET Framework就會嘗試去驗證Microsoft程序集是否正確並且沒有被修改過。.NET Framework是通過連接到公布在互聯網的服務器來驗證的。當.NET Framework框架試圖連接到互聯網上的服務器去驗證時超時或時間比較長,這就會使得其他超時設置比較短的.NET 應用程序(如 SSIS 或 SSRS)啟動失敗,出現下面錯誤信息。
"The request failed or the service did not respond in a timely fashion."
英文原文如下所:
When a .NET application startup the .NET Framework it tries to check if the Microsoft assemblies are right and have not been modified, this is done connecting to a server that has a revocation list in internet. When the framework tries to connect to the server to check if it has access to internet with an elevated timeout, this makes that any other .NET application that has less timeout setting fails (as SSIS or SSRS) with the error message you are getting.
The error message you are getting when you try to start SSRS:
"The request failed or the service did not respond in a timely fashion."
Means that the SSRS timeout is lower than the timeout of the connection to the revoke list server. Some recent windows updates have introduced this issue after you installed SP2 of SSRS 2008 R2. We are aware of this problem and we have already provided several workarounds.
This issue affects to all applications that runs on .NET framework 2.0 and there are several workarounds for this problem
解決方法:
第一種解決方案:
1: 點擊開始(Start)菜單,點擊運行(Run),輸入regedit命令
2: 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control.
3: 找到ServicesPipeTimeout選項,單擊右鍵選項“編輯”選項,選擇“Decimal"選項,輸入60000. 有可能你找不到ServicesPipeTimeout選項,這時你就需要新建該選項。然后如上所述設置其值。
4:設置完成后,需要重啟服務器才能生效。
我按上面方案就講問題解決了,博客Reporting Services service doesn't start after the installation of MS12-070 security patch中介紹,如果第一種方案沒有解決問題,可以通過下面第二種方案、第三種方案解決問題
第二種解決方案:
如果第一種方案沒有解決問題,你可以通過通過設置ReportingServicesService.exe.config配置文件禁用認證檢查。ReportingServicesService.exe.config通常位於C:\Program Files\Microsoft SQL Server\<RS Instance>\Reporting Services\ReportServer\bin 。其中我這台服務器的路徑為C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin ,在ReportingServicesService.exe.config 添加"<generatePublisherEvidence enabled="false"/>"
英文原文如下:
2nd workaround:
If the first action plan didn't work, try disabled the certificate checking in the ReportingServicesService.exe.config file:
Edit the ReportingServicesService.exe.config file usually located in this folder: C:\Program Files\Microsoft SQL Server\<RS Instance>\Reporting Services\ReportServer\bin
Add the "<generatePublisherEvidence enabled="false"/>" within the <Runtime> tag
Patch the server with the KB.
If you want to distribute this workaround to many users you can créate a script in PowerShell
第三種解決方案:
在控制面板里面找到”Internet Option“,在高級設置里面找到”Check for publisher's certificate revocation" 選項,去掉勾選即可。如果 SSRS服務是以Network Service賬號啟動,那么修改“Internet Option”選項並不會使之生效。如果是這樣,你可以為SSRS服務賬號修改下面一些配置,修改注冊表
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\WinTrust\TrustProviders\Software 下State值
從原先的0x00023c00改為0x00023e00
英文原文如下:
3rd workaround:
Another option would be disabling the global checking of the certificated in the machine following the steps below:
o Start -> Control panel
o Internet Options
o Advanced
o Uncheck "Check for publisher’s certificate revocation"
If the services are running under the Network Service account the change to the revocation in internet options is not working for them. In that case, you can perform the following changes for the SSRS service account:
Modify the following setting in the registry:
HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\WinTrust\TrustProviders\Software
Where the default value for State key is 0x00023c00
And you will need to change it to 0x00023e00
(More information in: http://support.microsoft.com/kb/2715304)
In order to get the Windows SID for this user and be able to find out the previous registry key, please follow the below instructions.
- Download SPGETSID tool from http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
- Once it is installed and save to a local file, open a cmd window (with administrator privileges ) and navigate through the cmd to the folder where this spgetsid.exe is located.
- Then type the following command line: spgetsid domain\user (where the domain\user is your SSRS service account)
- Once get the SID please go to the previous registry key for this user and apply the change.
S-1-5-20 is the SID for Network Service, and for other SIDs: http://support.microsoft.com/kb/243330
-
SID: S-1-5-18
Name: Local System
Description: A service account that is used by the operating system.
-
SID: S-1-5-19
Name: NT Authority
Description: Local Service
-
SID: S-1-5-20
Name: NT Authority
Description: Network Service
參考資料:


![clipboard[1] clipboard[1]](/image/aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvNzM1NDIvMjAxNDA2LzIwMTQxMDA1NTA0ODQ3OC5wbmc=.png)
![clipboard[2] clipboard[2]](/image/aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvNzM1NDIvMjAxNDA2LzIwMTQxMDA3NjkyNzg3OS5wbmc=.png)
![clipboard[3] clipboard[3]](/image/aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvNzM1NDIvMjAxNDA2LzIwMTQxMDA5ODQ4NDczOC5wbmc=.png)
![clipboard[4] clipboard[4]](/image/aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvNzM1NDIvMjAxNDA2LzIwMTQxMDEyMDY3MjM4My5wbmc=.png)