Błąd "Przekroczono maksymalny rozmiar pliku" podczas próby skopiowania firmy w usłudze Microsoft Dynamics AX 2009
Ten artykuł zawiera rozwiązanie umożliwiające pomyślne skopiowanie firmy w usłudze Microsoft Dynamics AX 2009.
Dotyczy: Microsoft Dynamics AX 2009
Oryginalny numer KB: 2437099
Symptomy
Podczas próby zduplikowania firmy w usłudze Microsoft Dynamics AX 2009 jest wyświetlany komunikat o błędzie informujący o przekroczeniu maksymalnego rozmiaru pliku. Jest jeszcze wystarczająco dużo wolnego miejsca (80 GB) na dysku twardym w formacie NTFS, a maszyna jest wyposażona w dużą ilość pamięci RAM (>= 20 GB) i pamięć wirtualną.
Podczas próby zduplikowania lub zaimportowania ogromnego pliku . Plik DAT (9 GB) zwracany jest następujący komunikat o błędzie:
"Błąd w pliku C:\Users\Administracja~1.SIN\AppData\Local\Temp$tmp0030005.$$$ podczas pisania w pliku record=FFFFEB40 błąd systemu Windows: =
Kod błędu: 50110 = maksymalny przekroczony rozmiar pliku Operacja zakończy się niepowodzeniem"
Przyczyna
Jest to limit rozmiaru pliku 32-bitowego (< 4 GB). Proces kopiowania firmy używa kilku tabel tymczasowych, a gdy tabela tymczasowa osiągnie określony rozmiar, nie będzie już przechowywany w pamięci podręcznej, zostanie zapisany w rodzaju pliku ISAM na dysku twardym. Istnieje ograniczenie, że ten plik nie może być większy niż 4 GB.
Rozwiązanie
Aby zoptymalizować element . Metoda eksportowania/importowania pliku DAT umożliwia wykonywanie wielu czynności:
Zmień tabelę
TmpRecIdMap
iTmpTransactionIdMap
w klasieSysDataImport\classDeclaration
, aby używać tabeli rzeczywistej zamiast tabeli tymczasowej. W przeciwnym razie może to zużywać całe miejsce tymczasowe dostępne na maszynie.Stary kod:
TmpRecIdMap old2NewRecId; TmpRecIdMap newRecId; TmpTableIdMap tmpTableIdMap; // Transaction id TmpTransactionIdMap old2NewCreatedTransactionId; TmpTransactionIdMap old2NewModifiedTransactionId;
Przykład nowego kodu (użyj 4 nowych tabel):
//->ChangeBegin // TmpRecIdMap old2NewRecId; // TmpRecIdMap newRecId; DD_RecIdMapOldRecId old2NewRecId; DD_RecIdMapNewRecId newRecId; //<-ChangeEnd TmpTableIdMap tmpTableIdMap; // Transaction id //->ChangeBegin // TmpTransactionIdMap old2NewCreatedTransactionId; // TmpTransactionIdMap old2NewModifiedTransactionId; DD_TransactionIdMapCreated old2NewCreatedTransactionId; DD_TransactionIdMapModified old2NewModifiedTransactionId; //<-ChangeEnd
Pobierz dołączone przykładowe xpo , aby użyć jako przykładu zmiany.
W programie SQL Server ustaw poziom rejestrowania na prosty (tylko podczas importowania, aby zapobiec nadmiernemu rejestrowaniu).
W programie Microsoft Dynamics AX 2009 wyeksportuj dane w kilku oddzielnych grupach tabel (konfigurując wiele grup definicji).
Upewnij się, że tabele odwołujące się do funkcji RecId są przechowywane w innej tabeli w tej samej grupie co powiązana tabela, jeśli nie, relacja RecId nie zostanie zachowana.
Upewnij się, że rozmiar plików bazy danych jest ustawiony na tyle wysoki, aby nie musiały rosnąć podczas importowania.
Ustaw następujące opcje:
- Wykonywanie w systemie AOS: Tak
- Nie szukaj istniejących rekordów: tak
- Indeksowanie: ponowne indeksowanie po zaimportowaniu
- Użyj kompresji identyfikatora rekordu: Tak
Uruchom import/eksport każdej grupy definicji na oddzielnym kliencie, a nawet na oddzielnych AOSs równolegle.
Użycie tych opcji maksymalizuje wydajność i zminimalizuje ryzyko wystąpienia pojedynczego błędu, który spowoduje zatrzymanie całej operacji podczas równoległego uruchamiania oddzielnych importów.