Серверный Fetchxml возвращает разные результаты

Одна из наших процедур позволяет пользователям массово вставлять связанные записи, выбирая вид, а затем нажимая кнопку ленты. Форма сохранена, установлен флаг, и плагин выполняет свою работу.

Мы используем подсетку с селектором представлений, чтобы пользователи могли выбирать или создавать свои собственные представления на лету. После выбора вида отображается количество результатов (при условии, что это 5k).

Когда плагин запускает ту же серверную часть fetchxml (Получить пользовательский запрос или сохраненный запрос, затем Получить + FetchExpression), результаты изменяются. Мы получаем не только различное количество записей, но и некоторые записи разные.

Мы пришли к выводу, что проблема связана с часовыми поясами. Некоторые фильтры включали «по или после» операторы вместе со значениями даты. Пример:

<filter type="and">
  <condition attribute="modifiedon" operator="on-or-after" value="2011-01-01" />
  <condition attribute="modifiedon" operator="on-or-before" value="2011-12-31" />
</filter>

Плагин работал от имени администратора. Изменение пользователя плагина не имеет никакого эффекта - как будто текущий часовой пояс пользователя не учитывается при извлечении записей из CRM с использованием выражения FetchExpression.

Как я могу гарантировать, что выражение fetchxml возвращает одинаковые результаты на стороне клиента и на стороне сервера?

Вероятно, связано:Поток MSDN.

Спасибо за ваше время.

Изменить: следуя совету Дэрила, я провел трассировку SQL. Результаты удивительны. Даты правильно смещены для запросов на стороне клиента (запускаются из CRM, то есть расширенного поиска) - это означает, что fetchxml правильно переведен с использованием настроек часового пояса пользователя. Это не происходит для одного и того же запроса на стороне сервера; выходной SQL содержит фильтры даты «как есть» без смещения часового пояса. Я предположил, что один и тот же перевод произошел независимо от источника контекста выполнения запроса.

Изменить 2: флаг в скрытой области кода (мой последний способ отладки) не позволял плагину создавать экземпляр службы в контексте работающего пользователя. Теперь все отлично. Спасибо всем за ваше время и вашу помощь, это очень ценится.

Ответы на вопрос(1)

Ваш ответ на вопрос