Compartir a través de


Cómo usar ExecuteMultiple para mejorar el rendimiento de la carga masiva de datos

Puede usar el mensaje ExecuteMultipleRequest para apoyar escenarios de paso de mensajes en masa con un mayor rendimiento en , especialmente en el caso de Dynamics 365 for Customer Engagement donde la latencia de Internet puede ser el mayor factor limitador. ExecuteMultipleRequest acepta una colección de entrada de Requests de mensajes, ejecuta cada una de las solicitudes de mensajes en el orden que aparecen en la colección de entrada y opcionalmente devuelve una colección de Responses que contiene la respuesta de cada mensaje o el error que se han producido. Cada solicitud de mensaje en la colección de entrada se procesa en una transacción independiente de la base de datos. ExecuteMultipleRequest se ejecuta usando el método IOrganizationService.Execute

En general, ExecuteMultipleRequest se comporta de la misma manera que si ejecutara cada solicitud de mensaje en la colección de solicitudes de entrada por separado, excepto que con mejor rendimiento. Se respeta el uso del parámetro CallerId del proxy de servicio y se aplicará a la ejecución de cada mensaje en la colección de solicitudes de entrada. Los complementos y las actividades de flujo de trabajo se ejecutan como se podría esperar para cada mensaje procesado.

El código personalizado en la forma de complementos y actividades personalizadas del flujo de trabajo puede ejecutar ExecuteMultipleRequest. Sin embargo, hay algunos puntos clave para tener en cuenta. Se devuelve una excepción generada por un complemento registrado sincrónico en el parámetro Fault del elemento de la colección de respuesta. Si un complemento se ejecuta en una transacción de la base de datos, el complemento ejecuta ExecuteMultipleRequest, y se inicia una reversión de la transacción, la cual incluye los cambios de datos que derivan de las solicitudes ejecutadas por ExecuteMultipleRequest.

Para obtener la última información acerca de ExecuteMultiple, consulte Ejecutar varias solicitudes con el servicio de la organización. Para recomendaciones y orientación, vea No use los tipos de solicitud de lotes en las actividades de flujo de trabajo y los complementos..

Aplicar límites para solicitudes simultáneas

Existen varias limitaciones relacionadas con el uso de ExecuteMultipleRequest. Un límite que se aplica solo a una implementación local se describe a continuación y los otros dos (sin recursión y tamaño máximo de lote) se documentan en (Dataverse) Limitaciones de tiempo de ejecución.

Limitación de llamadas simultáneas: para Dynamics 365 for Customer Engagement es posible establecer un límite en el número de ejeuciones de ExecuteMultipleRequest simultáneas por organización. Esto ayuda a evitar que una aplicación monopolice los recursos del servidor. Si se supera ese límite, se genera un error de "Servidor ocupado" incluso antes de que se ejecute la primera solicitud. Esta opción no está habilitada de forma predeterminada. El valor de la implementación para este límite es ExecuteMultiplePerOrgMaxConnectionsPerServer.

Propina

Para cualquier implementación de Customer Engagement, un administrador de implementaciones puede establecer o cambiar el límite máximo.

Vea también

Leer y escribir datos y metadatos, utilizando el servicio web IOrganizationService
Mensajes Microsoft.Xrm.Sdk
IOrganizationService.Execute
OrganizationRequest
OrganizationResponse
Mensajes Microsoft.Crm.Sdk
Importar datos