2015-12-11 4 views
1


При разработке синхронной плагин для "Microsoft Dynamics CRM 2015 Update 1 Online" Я использую ExecuteMultipleRequest создать несколько записей сущностей. Когда я тестирую подключаемый модуль в CRM, появляется сообщение об ошибке, в котором говорится, что «Тайм-аут SQL истек».
Если я заменил ExecuteMultipleRequest на service.Create(...), вызываемый в цикле, он отлично работает. Он также отлично работает, если я изменяю тип подключаемого модуля от синхронного до асинхронного без замены ExecuteMultipleRequest.
Кто-нибудь знает, что может быть причиной проблемы с таймаутом SQL в синхронном подключаемом модуле?
Спасибо.ExecuteMultipleRequest - SQL Timeout Expired - Microsoft Dynamics CRM 2015

ответ

2

Dynamics CRM online ограничен установкой по умолчанию за 2 минуты до истечения таймаута. Это означает, что более крупные процессы в одной операции с плагином подвержены таймауту.

Ниже приведен список опций:

  • Обзора код для повышения производительности
  • Перемещения тяжелой операции от родителя к записи дочернего объекта
  • Создания очереди объекта с типом и операциями который будет срабатывать операцию для каждой записи объекта индивидуально

УДАЧИ

Cheers

+0

Привет, Кевин, спасибо за ваш ответ. Я знаю ограничения в CRM Online, но это не так. Как я упоминал ранее, если я изменяю 'ExecuteMultipleRequest' на цикл с помощью' service.Create (...) ', он отлично работает. Плагин не является тяжелым: простые операции и создание нескольких записей. – Alex

+0

Привет, Алекс, спасибо за ваш ответ. Не могли бы вы включить свой код и опустить всю разумную информацию? Кроме того, вы уверены, что не достигли максимального количества нескольких запросов? Вы пытались добавлять и регистрировать таймеры? –

+0

Он не достигает предела нескольких запросов, я работаю над средой DEV, и в это время никто не работал. Возможно, я знаю, в чем проблема, этот запрос блокирует SQL-таблицы и происходит тупик. – Alex

0

Я бы не рекомендовал использовать ExecuteMultipleRequest из плагина. Вы уже на сервере в тот момент времени и поэтому не получаете каких-либо преимуществ от использования ExecuteMultipleRequest (из моего собственного тестирования я не видел улучшения производительности, если у вас есть данные, которые говорят иначе, будут любить чтобы увидеть это). Вы также сталкиваетесь с потенциальной проблемой отказа запроса, since CRM limits the number of concurrent ExecuteMultipleRequests that are executing.

+0

Спасибо за ваш ответ и совет. Да, я нахожусь на сервере, но плагин работает через службу, поэтому он звонит на него, не лучше ли сделать один звонок вместо многих? Поправьте меня, если я ошибаюсь. Во всяком случае, это хорошая рекомендация не использовать его в подключаемом модуле, особенно если он работает часто, поэтому может быть достигнут предел, который может вызвать проблему. – Alex

+0

Вы сами можете определить, является ли это «лучше». Я не думаю, что запросы из одного и того же плагина выполняются на разных серверах. Я верю, что он выполняется на том же сервере, поэтому нет никакой выгоды от одного запроса к нескольким. – Daryl

+0

Я вижу вашу точку зрения, спасибо @Daryl – Alex

Смежные вопросы