Publikowanie (niedużego) rozwiązania i … timeout :/

Kiedy serwery są obciążone dojść może do sytuacji kiedy próba publikacji lub importu rozwiązania w Dynamics CRM zakończy się niepowodzeniem. Dokładne sprawdzenie w logach CRM (/Program Files/Microsoft Dynamics CRM/Trace) uświadomi nas, że mamy do czynienia z timeout’em. Na szczęście CRM pozwala na modyfikację niektórych parametrów związanym z czasem wykonania operacji. Niestety niektóre z opisanych poniżej modyfikacji jest niewspieranych, ale niestety bez nich nie uda się problemu rozwiązać.

Pierwsze miejsce (wspierane) gdzie należy ustawić parametry to rejestr. W kluczu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM ustawić należy następujące klucze

  • OLEDBTimeout – określa wartość dla pojedynczego zapytania SQL. Wartość wyrażona w sekundach. Domyślnie 30 sekund
  • ExtendedTimeout – określa wartość dla ASP.NET. Wartość wyrażona w milisekundach. Domyślnie 1 000 000 milisekund
  • NormalTimeout – określa wartość dla SOAP. Wartość wyrażona w milisekundach. Domyślnie 300 000 milisekund

Jeśli to nie pomoże należy zmodyfikować plik web.config (niewspierane) znajdujący się w katalogu CRMWeb (u mnie: /Program Files/Microsoft Dynamics CRM/CRMWeb)

Zmienić należy wartość domyślną (300) parametru executionTimeout na inną – ja ustawiłem 3600 – sekund. Parametr ten określa po jakim czasie żądanie ASP.NET zostanie “zabite”.

Jeśli i to nie pomoże pozostaje nam ostatni parametr (niewspierane), który modyfikuje się w bazie MSCRM_CONFIG w tabeli DeploymentProperties. W tabeli tej szukamy rekordu, który w kolumnie ColumnName ma wartość SqlCommandTimeout

Wartość domyślna tego parametru to 30. Wartość wyrażona jest w sekundach.