Compartir a través de


Error "Se superó el tamaño máximo de archivo" al intentar copiar una empresa en Microsoft Dynamics AX 2009

En este artículo se proporciona una resolución para asegurarse de que puede copiar correctamente una empresa en Microsoft Dynamics AX 2009.

Se aplica a: Microsoft Dynamics AX 2009
Número de KB original: 2437099

Síntomas

Al intentar duplicar una empresa en Microsoft Dynamics AX 2009, recibe un mensaje de error que indica que se ha superado el tamaño máximo de archivo. Todavía hay suficiente espacio libre (80 GB) en el disco duro con formato NTFS y la máquina está equipada con una gran cantidad de RAM (>=20 GB) y memoria virtual también.

Al intentar duplicar o importar un gran . Archivo DAT (9 GB), se produce el siguiente mensaje de error:

"Error en el archivo C:\Users\Admin~1.SIN\AppData\Local\Temp$tmp0030005.} al escribir en record=FFFFEB40 error de Windows : =

Código de error: 50110 = Se producirá un error en la operación de tamaño máximo de archivo superado"

Causa

Se trata de un límite de tamaño de archivo de 32 bits (< 4 GB). El proceso de la empresa de copia usa algunas tablas temporales y cuando una tabla temporal alcanza un tamaño determinado, ya no se conservará en la memoria caché, se escribirá en un tipo de archivo ISAM en el disco duro. Hay una limitación de que este archivo no puede ser mayor que 4 GB.

Solución

Para optimizar . Método de archivo DAT de exportación/importación, hay varias cosas que puede hacer:

  1. Cambie la TmpRecIdMap tabla y TmpTransactionIdMap de la clase SysDataImport\classDeclaration para usar la tabla real en lugar de la tabla temporal. De lo contrario, esto puede consumir todo el espacio temporal disponible en la máquina.

    Código anterior:

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

    Ejemplo de código nuevo (use 4 tablas nuevas):

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

    Descargue el ejemplo adjunto xpo para usarlo como ejemplo del cambio.

  2. En SQL Server, establezca el nivel de registro en simple (al importar para evitar un registro excesivo).

  3. Dentro de Microsoft Dynamics AX 2009, exporte los datos en varios grupos independientes de tablas (mediante la configuración de varios grupos de definiciones).

  4. Asegúrese de mantener las tablas que hacen referencia a RecId en otra tabla del mismo grupo que la tabla relacionada, si no se mantiene la relación RecId.

  5. Asegúrese de que el tamaño de los archivos de base de datos sea lo suficientemente alto como para que no tengan que crecer mientras se ejecuta la importación.

  6. Establece las siguientes opciones:

    • Ejecutar en AOS: Sí
    • No busque registros existentes: sí
    • Indexación: reindexación después de la importación
    • Usar compresión de identificador de registro: Sí
  7. Ejecute la importación y exportación de cada grupo de definiciones en un cliente independiente o incluso en AOS independientes en paralelo.

El uso de estas opciones maximizará el rendimiento y minimizará el riesgo de un único error que provoca que todo se detenga a medida que se ejecutan importaciones independientes en paralelo.