Limit czasu występuje podczas importowania dużych plików dostosowywania do Microsoft Dynamics CRM 2011 r.

Ten artykuł zawiera rozwiązanie problemu, który występuje podczas próby zaimportowania dużych plików dostosowywania do Microsoft Dynamics CRM 2011 r.

Ważna

Niniejszy artykuł zawiera informacje dotyczące modyfikowania rejestru. Przed zmodyfikowaniem rejestru wykonaj jego kopię zapasową. Upewnij się, że znasz sposób przywrócenia rejestru w przypadku wystąpienia problemu. Aby uzyskać więcej informacji na temat tworzenia kopii zapasowych, przywracania i modyfikowania rejestru, zobacz Informacje o rejestrze systemu Windows dla zaawansowanych użytkowników.

Dotyczy: Microsoft Dynamics CRM 2011 r.
Oryginalny numer KB: 918609

Symptomy

Podczas importowania dużych plików dostosowywania do Microsoft Dynamics CRM 2011 r. następuje przekroczenie limitu czasu. Ponadto zostanie wyświetlony jeden z następujących komunikatów o błędach.

Komunikat o błędzie 1

Błąd przekroczenia limitu czasu importu.

Komunikat o błędzie 2

Przekroczono maksymalną długość żądania.

Komunikat o błędzie 3

Nie można przekazać pliku lub importowanie nie powiodło się

Komunikat o błędzie 4

Nie jest to prawidłowy plik dostosowywania. Użyj pliku .XML, który został wygenerowany przez wyeksportowanie dostosowań.

Jeśli wartość DevErrors jest ustawiona na Włączone w pliku Web.config , zostanie wyświetlony następujący komunikat o błędzie:

Raport o błędach platformy Microsoft CRM:

Opis błędu: upłynął limit czasu

Szczegóły błędu: szczegółowe informacje o tym błędzie nie zostały podane przez platformę.

Numer błędu: 0x80040E31

Ponadto podczas uaktualniania dużej bazy danych Microsoft CRM do Microsoft Dynamics CRM 2011 r. może zostać wyświetlony następujący komunikat o błędzie:

09:54:25| Błąd| Wyjątek instalacji. System.Exception: Akcja Microsoft.Crm.Setup.Server.InstallDatabaseAction nie powiodła się. --->
System.Data.SqlClient.SqlException: Limit czasu wygasł. Limit czasu wygasł przed zakończeniem operacji lub serwer nie odpowiada. at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseUtility.ExecuteSql(InstallDatabase database, String sql, Int32 timeout) at Microsoft.Crm.Setup.DatabaseInstaller.SqlScriptAction.Execute() at
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseInstaller.Install(Int32 languageCode, String file, Boolean upgrade) at
Microsoft.Crm.Setup.Server.InstallDatabaseAction.Do(IDictionary parameters) at
Microsoft.Crm.Setup.Common.Action.ExecuteAction(akcja akcji, parametry IDictionary, cofanie wartości logicznej) --- koniec --- śledzenia wewnętrznego stosu wyjątków w witrynie Microsoft.Crm.Setup.Common.Action.ExecuteAction(akcja, parametry IDictionary, cofanie wartości logicznej) pod adresem
Microsoft.Crm.Setup.Common.Installer.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Server.DatabaseInstaller.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Common.ComposedInstaller.InternalInstall(IDictionary stateSaver) at
Microsoft.Crm.Setup.Common.ComposedInstaller.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Server.ServerSetup.Upgrade(dane IDictionary) w witrynie Microsoft.Crm.Setup.Server.ServerSetup.Run()

Przyczyna

Ten problem występuje, ponieważ spełniony jest jeden z następujących warunków:

  • Czas, który jest używany do importowania plików dostosowywania lub uaktualniania rozwiązań biznesowych firmy Microsoft — CRM przekracza wartość domyślną OLEDBTimeout w Microsoft Dynamics CRM dla komputera z systemem Microsoft SQL Server.

  • Czas, który jest używany do importowania plików dostosowywania lub uaktualniania Microsoft Dynamics CRM przekracza ExtendedTimeout wartość używaną w przypadku długotrwałych operacji.

    Uwaga

    Wpis ExtendedTimeout rejestru na serwerze Microsoft Dynamics CRM nie powinien być ustawiony na wartość większą niż 2 147 483 647. Jest to maksymalna wartość, która może być używana przez ExtendedTimout wpis rejestru.
    Importowanie plików dostosowywania może być długotrwałą operacją.

  • Rozmiar pliku Customization.xml jest większy niż 7,5 megabajtów (MB).

    Uwaga

    • Plik Customization.xml jest tworzony podczas eksportowania jednostek niestandardowych.
    • Domyślnie firma Microsoft ASP.NET ogranicza rozmiar żądania HTTP do 8 MB.

Rozwiązanie

Aby rozwiązać ten problem, użyj co najmniej jednej z następujących metod.

Metoda 1 . Dodawanie podkluczów rejestru OLEDBTimeout i ExtendedTimeout w celu zwiększenia wartości limitu czasu

Ostrzeżenie

Niepoprawne zmodyfikowanie rejestru przy użyciu Edytora rejestru lub innej metody może stać się przyczyną poważnych problemów. Problemy te mogą spowodować konieczność ponownej instalacji systemu operacyjnego. Firma Microsoft nie może zagwarantować, że rozwiązanie tych problemów będzie możliwe. Rejestr można modyfikować na własną odpowiedzialność.

  1. Wybierz polecenie Start > Uruchom, wpisz polecenie regedit, a następnie kliknij przycisk OK.

  2. Odszukaj następujący podklucz rejestru:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM

  3. Kliknij prawym przyciskiem myszy mscrm, wskaż nowy, a następnie wybierz wartość DWORD , aby utworzyć nową wartość DWORD.

  4. Zmień nazwę wartości DWORD na wartość OLEDBTimeout.

    Uwaga

    Ta wartość uwzględnia wielkość liter.

  5. Kliknij prawym przyciskiem myszy wartość DWORD, a następnie wybierz pozycję Modyfikuj.

  6. W oknie dialogowym Edytowanie wartości DWORD wpisz 86400 w polu Dane wartości , wybierz pozycję Dziesiętne w opcji Podstawowa , a następnie wybierz przycisk OK.

    Uwaga

    Zgodnie z wymaganiami komputera z uruchomionym serwerem SQL i liczbą plików dostosowywania wartość może być większa niż 86400. Wartość 86400 jest równoważna 24 godzinom. Należy to zrobić tylko tymczasowo lub jako krok rozwiązywania problemów. Zalecana wartość to od 30 do 300. Pozostawienie tego ustawienia na zbyt wysokim poziomie może spowodować problemy z wydajnością.

  7. Kliknij prawym przyciskiem myszy mscrm, wskaż nowy, a następnie wybierz wartość DWORD , aby utworzyć nową wartość DWORD.

  8. Zmień nazwę wartości DWORD na wartość ExtendedTimeout.

  9. Kliknij prawym przyciskiem myszy wartość DWORD, a następnie wybierz pozycję Modyfikuj.

  10. W oknie dialogowym Edytowanie wartości DWORD wpisz 10000000 w polu Dane wartości , a następnie wybierz przycisk OK.

    Uwaga

    • W polu Dane wartości możesz wpisać wartość większą niż 1 000 000. Nie należy jednak wpisywać wartości większej niż 2 147 483 647. Jest to szesnastkowa 0x7FFFFFFF.
    • WAŻNE: Jeśli ten klucz już istnieje, zwróć uwagę na bieżącą wartość. Po zakończeniu importowania lub uaktualniania dla Microsoft Dynamics CRM ustaw wartość tego klucza z powrotem na oryginalną wartość lub usuń klucz, jeśli wcześniej nie istniał. Domyślna wartość OLEDBTimeout wynosi 30 sekund.

Metoda 2 . Modyfikowanie parametrów w dwóch różnych plikach Web.config

  1. Wybierz pozycję Start, wybierz pozycję Wszystkie programy, wybierz pozycję Narzędzia administracyjne, a następnie wybierz pozycję Menedżer usług Internet Information Services (IIS).

  2. Rozwiń nazwę serwera, a następnie rozwiń węzeł Witryny sieci Web.

  3. Kliknij prawym przyciskiem myszy Microsoft CRM witrynę sieci Web, a następnie wybierz pozycję Otwórz.

  4. Kliknij prawym przyciskiem myszy plik Web.config , wybierz pozycję Otwórz za pomocą, a następnie wybierz pozycję Notatnik.

  5. W Notatniku znajdź następujący wiersz.

    <httpRuntime executionTimeout="300" maxRequestLength="8192"/>

  6. Zmień executionTimeout="3600" i change maxRequestLength="20000".

  7. Zapisz, a następnie zamknij plik Web.config .

  8. W katalogu, w którym został otwarty plik Web.config , otwórz folder MSCRMServices.

  9. Kliknij prawym przyciskiem myszy plik Web.config , wybierz pozycję Otwórz za pomocą, a następnie wybierz pozycję Notatnik.

  10. W Notatniku znajdź następujący wiersz.

    <httpRuntime maxRequestLength="8192"/>

  11. Zmień wartość maxRequestLength="20000".

  12. Zapisz, a następnie zamknij plik Web.config .

    Ważna

    Po wykonaniu akcji wymagającej powyższych zmian w pliku web.config te parametry powinny zostać zresetowane do ich wartości domyślnych.

Więcej informacji

Wartość OLEDBTimeout

Jednostka wartości to OLEDBTimeout sekundy. Domyślnie OLEDBTimeout wartość to 30 sekund. Ta OLEDBTimeout wartość steruje wartością limitu czasu SQL używaną dla pojedynczego zapytania SQL. Zwiększona OLEDBTimeout wartość jest przydatna, gdy serwer SQL jest przeciążony. Ponadto przetwarzanie zapytania trwa dłużej.

Wartość ExtendedTimeout

Jednostka ExtendedTimeout wartości to milisekundy. Domyślnie ExtendedTimeout wartość to 10000000 milisekund. Wartość ExtendedTimeout kontroluje wartość limitu czasu ASP.NET używaną do importowania żądań. Wartość limitu czasu musi być większa niż czas zakończenia całego procesu importu. Zwiększona ExtendedTimeout wartość jest przydatna, gdy proces importowania zajmuje dużo czasu.

Uwaga

Gdy wydajność serwera SQL jest niska lub istnieje wiele plików dostosowywania do zaimportowania, proces importowania trwa długo.