Fehler "Maximale Dateigröße überschritten" beim Versuch, ein Unternehmen in Microsoft Dynamics AX 2009 zu kopieren

Dieser Artikel enthält eine Lösung, um sicherzustellen, dass Sie ein Unternehmen erfolgreich in Microsoft Dynamics AX 2009 kopieren können.

Gilt für: Microsoft Dynamics AX 2009
Ursprüngliche KB-Nummer: 2437099

Problembeschreibung

Wenn Sie versuchen, ein Unternehmen in Microsoft Dynamics AX 2009 zu duplizieren, erhalten Sie eine Fehlermeldung, die besagt, dass die maximale Dateigröße überschritten wurde. Auf der NTFS-formatierten Festplatte ist noch genügend freier Speicherplatz (80 GB) vorhanden, und der Computer ist mit viel RAM (>=20 GB) und virtuellem Arbeitsspeicher ausgestattet.

Beim Versuch, eine große zu duplizieren oder zu importieren. DAT-Datei (9 GB): Die folgende Fehlermeldung wird ausgelöst:

"Fehler in der Datei C:\Users\Admin~1.SIN\AppData\Local\Temp$tmp0030005.$$$ beim Schreiben in record=FFFFEB40 Windows-Fehler : =

Fehlercode: 50110 = Maximale Dateigröße überschritten Vorgang schlägt fehl"

Ursache

Dies ist eine 32-Bit-Dateigrößenbeschränkung (< 4 GB). Der Kopierunternehmensprozess verwendet einige temporäre Tabellen, und wenn eine temporäre Tabelle eine bestimmte Größe erreicht, wird sie nicht mehr im Cache gespeichert, sie wird in eine Art ISAM-Datei auf der Festplatte geschrieben. Es gibt eine Einschränkung, dass diese Datei nicht größer als 4 GB sein darf.

Lösung

So optimieren Sie die . DAT-Dateimethode für Export/Import, es gibt eine Reihe von Möglichkeiten, die Sie tun können:

  1. Ändern Sie die TmpRecIdMap Tabelle und TmpTransactionIdMap in der -Klasse SysDataImport\classDeclaration so, dass anstelle einer temporären Tabelle eine echte Tabelle verwendet wird. Andernfalls belegt dies möglicherweise den gesamten temporären Speicherplatz, der auf dem Computer verfügbar ist.

    Alter Code:

    TmpRecIdMap old2NewRecId;
    TmpRecIdMap newRecId;
    TmpTableIdMap tmpTableIdMap;
    // Transaction id
    TmpTransactionIdMap old2NewCreatedTransactionId;
    TmpTransactionIdMap old2NewModifiedTransactionId;
    

    Beispiel für neuen Code (verwenden Sie vier neue Tabellen):

    //->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
    

    Laden Sie das angefügte Xpo-Beispiel herunter, um es als Beispiel für die Änderung zu verwenden.

  2. Legen Sie in SQL Server den Protokolliergrad auf einfach fest (nur während des Imports, um übermäßige Protokollierung zu verhindern).

  3. Exportieren Sie die Daten in Microsoft Dynamics AX 2009 in mehrere separate Gruppen von Tabellen (durch Konfigurieren mehrerer Definitionsgruppen).

  4. Stellen Sie sicher, dass Tabellen, die auf RecId verweisen, in einer anderen Tabelle in derselben Gruppe wie die verknüpfte Tabelle beibehalten werden. Andernfalls wird die RecId-Beziehung nicht beibehalten.

  5. Stellen Sie sicher, dass die Größe der Datenbankdateien hoch genug festgelegt ist, damit sie während der Importausführung nicht vergrößert werden müssen.

  6. Legen Sie die folgenden Optionen fest:

    • Ausführen unter AOS: Ja
    • Suchen Sie nicht nach vorhandenen Datensätzen: Ja
    • Indizierung: Erneutes Indizieren nach dem Import
    • Verwenden der Datensatz-ID-Komprimierung: Ja
  7. Führen Sie den Import/Export jeder Definitionsgruppe auf einem separaten Client oder sogar auf separaten AOSs parallel aus.

Die Verwendung dieser Optionen maximiert die Leistung und minimiert das Risiko, dass ein einzelner Fehler das Ganze zum Stillstand bringt, wenn Sie separate Importe parallel ausführen.