當您將大型自定義檔案匯入 Dynamics CRM 2011 Microsoft時,就會發生逾時
本文提供當您嘗試將大型自定義檔案匯入至 Dynamics CRM 2011 Microsoft時發生逾時問題的解決方案。
重要
本文包含如何修改「登錄檔」的相關資訊。 修改登錄前,請務必先備份。 並了解如何在發生問題時還原登錄。 如需如何備份、還原及修改登錄的詳細資訊,請參閱 進階使用者的 Windows 登錄資訊。
適用於: Microsoft Dynamics CRM 2011
原始 KB 編號: 918609
徵兆
當您將大型自定義檔案匯入Microsoft Dynamics CRM 2011 時,就會發生逾時。 此外,您會收到下列其中一個錯誤訊息。
錯誤訊息 1
匯入逾時錯誤。
錯誤訊息 2
超過要求長度上限。
錯誤訊息 3
無法上傳檔案或匯入失敗
錯誤訊息 4
這不是有效的自定義檔案。 請使用匯出自定義所產生的.XML檔案。
如果 DevErrors 值設定為 Web.config 檔案中的 On,您會收到下列錯誤訊息:
Microsoft CRM 平台錯誤報告:
錯誤描述:逾時已過期
錯誤詳細數據:平臺尚未提供此錯誤的詳細數據。
錯誤號碼:0x80040E31
此外,當您將大型 Microsoft CRM 資料庫升級至 Microsoft Dynamics CRM 2011 時,您可能會收到下列錯誤訊息:
09:54:25|錯誤|安裝例外狀況。System.Exception:動作Microsoft.Crm.Setup.Server.InstallDatabaseAction 失敗。 --->
System.Data.SqlClient.SqlException:逾時過期。 在作業完成前就已超過逾時期間,或是伺服器沒有回應。 at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseUtility.ExecuteSql(InstallDatabase 資料庫,String sql, Int32 逾時),位於 at Microsoft.Crm.Setup.DatabaseInstaller.SqlScriptAction.Execute()
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseInstaller.Install(Int32 languageCode, String file, Boolean upgrade) at
Microsoft.Crm.Setup.Server.InstallDatabaseAction.Do(IDictionary 參數)
Microsoft.Crm.Setup.Common.Action.ExecuteAction(Action action, IDictionary parameters, Boolean undo) ---在 Microsoft.Crm.Setup.Common.Action.ExecuteAction(Action action, IDictionary parameters, Boolean undo) 處的內部例外狀況堆疊追蹤結束---
Microsoft.Crm.Setup.Common.Installer.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Server.DatabaseInstaller.Install(IDictionary stateSaver)
Microsoft.Crm.Setup.Common.ComposedInstaller.InternalInstall(IDictionary stateSaver) at
Microsoft.Crm.Setup.Common.ComposedInstaller.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Server.ServerSetup.Upgrade(IDictionary data) at Microsoft.Crm.Setup.Server.ServerSetup.Run()
原因
發生此問題的原因是下列其中一個條件成立:
用於匯入自定義檔案或升級 Microsoft Business Solutions - CRM 的時間超過執行 Microsoft SQL Server 之計算機的 Microsoft Dynamics CRM 中的預設值
OLEDBTimeout
。用於匯入自定義檔案或升級 Microsoft Dynamics CRM 的時間超過
ExtendedTimeout
用於長時間執行作業的值。注意
ExtendedTimeout
Microsoft Dynamics CRM 伺服器上的登錄專案不應該設定為大於 2,147,483,647 的值。 這是登錄專案可以使用的最大值ExtendedTimout
。
匯入自定義檔案可以是長時間執行的作業。Customization.xml檔案的大小大於 7.5 MB(MB)。
注意
- 當您匯出自定義實體時,會建立Customization.xml檔案。
- 根據預設,Microsoft ASP.NET 將 HTTP 要求大小限製為 8 MB。
解決方法
若要解決此問題,請使用下列一或多個方法。
方法 1 - 新增 OLEDBTimeout 和 ExtendedTimeout 登錄子機碼,以增加逾時值
警告
如果您使用登錄編輯程式或其他方法修改登錄時不正確,就可能發生嚴重的問題。 可能需要重新安裝作業系統才能解決這些問題。 Microsoft cannot guarantee that these problems can be solved. 修改登錄的風險請自負。
選取 [開始],選取 [執行],輸入 [regedit],然後選取 [確定]。
找出下列登錄子機碼:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM
以滑鼠右鍵按兩下 [MSCRM],指向 [ 新增],然後選取 [DWORD 值 ] 以建立新的 DWORD 值。
將 DWORD 值重新命名為 OLEDBTimeout 值。
注意
此值須區分大小寫。
以滑鼠右鍵按下 DWORD 值,然後選取 [ 修改]。
在 [編輯 DWORD 值] 對話框中,於 [值數據] 方塊中輸入 86400,選取 [基底] 選項中的 [十進位],然後選取 [確定]。
注意
根據執行 SQL Server 的電腦和自定義檔案數目的需求,此值可以大於 86400。 86400 的值相當於24小時。 這應該只會暫時完成,或做為疑難解答步驟。 建議的值介於 30 到 300 之間。 保留此設定太高可能會導致效能問題。
以滑鼠右鍵按兩下 [MSCRM],指向 [ 新增],然後選取 [DWORD 值 ] 以建立新的 DWORD 值。
將 DWORD 值重新命名為 ExtendedTimeout 值。
以滑鼠右鍵按下 DWORD 值,然後選取 [ 修改]。
在 [編輯 DWORD 值] 對話框中,於 [值數據] 方塊中輸入 1000000,然後選取 [確定]。
注意
- 在 [ 值數據 ] 方塊中,您可以輸入大於 1,000,000 的值。 不過,請勿輸入大於 2,147,483,647 的值。 這是十六進位0x7FFFFFFF。
- 重要事項:如果此索引鍵已經存在,請注意目前的值。 當您完成 Microsoft Dynamics CRM 的匯入或升級之後,請將此密鑰的值設定回原始值,如果金鑰先前不存在,請刪除該密鑰。 默認 OLEDBTimeout 值為30秒。
方法 2 - 修改兩個不同的 Web.config 檔案中的參數
依序選取 [開始]、[所有程式]、[系統管理工具],然後選取 [網際網路資訊服務 [IIS] 管理員。
展開伺服器名稱,然後展開 [網站]。
以滑鼠右鍵按下 Microsoft CRM 網站,然後選取 [ 開啟]。
以滑鼠右鍵按兩下 Web.config 檔案,選取 [開啟With],然後選取 [記事本]。
在 [記事本] 中,找出下列這一行。
<httpRuntime executionTimeout="300" maxRequestLength="8192"/>
變更
executionTimeout="3600"
與change maxRequestLength="20000"
。儲存並關閉 Web.config 檔案。
在您開啟 Web.config 檔案的目錄中,開啟 MSCRMServices 資料夾。
以滑鼠右鍵按兩下 Web.config 檔案,選取 [開啟With],然後選取 [記事本]。
在 [記事本] 中,找出下列這一行。
<httpRuntime maxRequestLength="8192"/>
變更
maxRequestLength="20000"
。儲存並關閉 Web.config 檔案。
重要
完成需要對 web.config 檔案進行上述變更的動作之後,這些參數應該重設為預設值。
其他相關資訊
OLEDBTimeout 值
值的單位 OLEDBTimeout
為秒。 根據預設, OLEDBTimeout
此值為 30 秒。 值 OLEDBTimeout
會控制用於單一 SQL 查詢的 SQL 逾時值。 當 SQL Server 多載時,增加 OLEDBTimeout
的值很有用。 此外,查詢需要較長的時間來處理。
ExtendedTimeout 值
值的單位 ExtendedTimeout
為毫秒。 根據預設, ExtendedTimeout
此值為 1000000 毫秒。 值 ExtendedTimeout
會控制用於匯入要求的 ASP.NET 逾時值。 逾時值必須大於完成整個匯入程序的時間。 當匯入程式花費很長的時間時,增加 ExtendedTimeout
的值就很有用。
注意
當 SQL Server 的效能緩慢或匯入許多自定義檔案時,匯入程式需要很長的時間。