天天看點

Reporting Service 服務啟動時報錯The service did not respond to the start or control request in a timely fashion

案例環境:

  啟動一台資料庫伺服器(windows server 2003)的reporting service(sql server 2008 r2)服務時,出現如下錯誤資訊:

Reporting Service 服務啟動時報錯The service did not respond to the start or control request in a timely fashion

導緻:因為安裝了這個安全更新檔後,當.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選項,這時你就需要建立該選項。然後如上所述設定其值。

Reporting Service 服務啟動時報錯The service did not respond to the start or control request in a timely fashion
Reporting Service 服務啟動時報錯The service did not respond to the start or control request in a timely fashion

    4:設定完成後,需要重新開機伺服器才能生效。

第二種解決方案:

如果第一種方案沒有解決問題,你可以通過通過設定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"/>"

英文原文如下:

第三種解決方案:

    在控制台裡面找到”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

Reporting Service 服務啟動時報錯The service did not respond to the start or control request in a timely fashion
Reporting Service 服務啟動時報錯The service did not respond to the start or control request in a timely fashion

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

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.

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.

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

description: network service