Репликация данных Microsoft Dynamics 365 (сетевая версия) в базу данных Microsoft Azure SQL

 

Опубликовано: Февраль 2017

Применимо к: Dynamics 365 (online), Dynamics CRM Online

Примечание

Приведенные здесь сведения относятся к версиям Dynamics 365 до Dynamics 365 (сетевая версия), версия 9.0. Последнюю документацию см. в разделе Репликация данных в базу данных SQL Azure.

Microsoft Dynamics 365-Служба экспорта данных представляет собой службу-надстройку, доступную как решение Microsoft AppSource, которое добавляет возможность репликации данных Microsoft Dynamics 365 Online в хранилище База данных SQL Microsoft Azure в принадлежащей клиенту подписке Microsoft Azure. Поддерживаемые целевые пункты назначения: База данных SQL Microsoft Azure и SQL Server на виртуальных машинах Microsoft Azure. Сначала Служба экспорта данных выполняет интеллектуальную синхронизацию всех данных Dynamics 365, затем выполняется постоянная синхронизация по мере появления изменений (разностные изменения) в системе Microsoft Dynamics 365 Online. Это помогает обеспечить несколько сценариев аналитики и отчетности поверх данных Dynamics 365 с данными Azure и службами аналитики, а также открывает новые возможности для клиентов и партнеров по созданию настраиваемых решений.

Примечание

Можно использовать Служба экспорта данных с:

  • Microsoft Dynamics 365 Online

  • Обновление Microsoft Dynamics CRM Online 2016

Сведения о программном интерфейсе для управления конфигурацией и администрирования Служба экспорта данных см. в разделе MSDN: Служба экспорта данных.

Содержание

Необходимые условия для работы с Служба экспорта данных

Требуемые службы, учетные данные и привилегии

Что следует знать перед использованием службы экспорта данных

Профиль экспорта

Создание профиля экспорта

Изменение существующего профиля экспорта

В таблице приведены сведения для целевой базы данных Azure SQL

Разрешение проблем синхронизации

Обработка ошибок и мониторинг

Рекомендации по использованию базы данных SQL Azure с экспортом данных

О латентности синхронизации данных

Настройка хранилища ключей Azure

Известные проблемы и ограничения

Необходимые условия для работы с Служба экспорта данных

Чтобы начать использовать Служба экспорта данных, должны быть выполнены следующие необходимые условия.

Служба базы данных SQL Azure

  • Подписка на База данных SQL Azure, принадлежащая клиенту. Эта подписка должна поддерживать синхронизируемое количество данных.

  • Параметры брандмауэра. Рекомендуется отключить параметр Разрешить доступ к службам Azure и указать соответствующие IP-адреса клиента, перечисленные в этом разделе. Дополнительные сведения: Статические IP-адреса базы данных Azure SQL, используемые службой экспорта данных

    Кроме того, можно включить параметр Разрешить доступ к службам Azure, чтобы разрешить доступ к службам Azure.

    Для SQL Server на виртуальной машине Azure должен быть включен параметр "Подключение к SQL Server по Интернету". Дополнительные сведения: Microsoft Azure: подключение к виртуальной машине SQL Server в Azure (классическое развертывание)

  • Пользователь базы данных должны иметь разрешения в базе данных и уровне схемы в соответствии со следующими таблицами. Пользователь базы данных используется в строке подключения экспорта данных.

    Требуемые разрешения базы данных.

    Код типа разрешения

    Имя разрешения

    CRTB

    СОЗДАТЬ ТАБЛИЦУ

    CRTY

    СОЗДАТЬ ТИП

    CRVW

    СОЗДАТЬ ПРЕДСТАВЛЕНИЕ

    CRPR

    СОЗДАТЬ ПРОЦЕДУРУ

    ALUS

    ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ

    VWDS

    ПРОСМОТР СОСТОЯНИЯ БАЗЫ ДАННЫХ

    Требуемые разрешения схемы.

    Код типа разрешения

    Имя разрешения

    AL

    ИЗМЕНИТЬ

    В

    ВСТАВИТЬ

    DL

    УДАЛИТЬ

    SL

    ВЫБРАТЬ

    UP

    ОБНОВИТЬ

    EX

    ВЫПОЛНИТЬ

    RF

    ССЫЛКИ

Служба хранилища ключей Azure

  • Принадлежащая клиенту подписка на Хранилище ключей Azure, которая используется для безопасного ведения строки подключения базы данных.

  • Назначьте разрешение PermissionsToSecrets для приложения с идентификатором "b861dbcc-a7ef-4219-a005-0e4de4ea7dcf". Это может сделать, выполнив приведенную ниже команду AzurePowerShell, и используется для получения доступа к Хранилище ключей , содержащему секрет строки подключения.Дополнительные сведения:Настройка хранилища ключей Azure

  • Хранилище ключей должно быть помечено кодами организации (OrgId) и клиента (TenantId) Microsoft Dynamics 365. Это можно сделать, выполнив приведенную ниже команду AzurePowerShell.Дополнительные сведения:Настройка хранилища ключей Azure

Microsoft Dynamics 365 Online

  • Экземпляр Обновление Microsoft Dynamics CRM Online 2016 или более поздней версии.

  • Должно быть установлено решение Служба экспорта данных. Получите его сейчас в Microsoft AppSource.

  • Для сущностей, которые будут добавлены в Профиль экспорта, должно быть отслеживание изменений. Чтобы можно было синхронизировать стандартную или настраиваемую сущность, перейдите в раздел Настройка > Настроить систему и щелкните сущность. На вкладке Общие сведения убедитесь, что включен параметр Отслеживание изменений в разделе Службы данных.

  • Требуется роль безопасности "Администратор системы" в экземпляре Microsoft Dynamics 365 Online.

Веб-браузер

Разрешите всплывающие окна для домена https://discovery.crmreplication.azure.net/ в веб-браузере. Это необходимо для автоматического входа при переходе к пункту "Параметры" > "Экспорт данных".

Требуемые службы, учетные данные и привилегии

Чтобы использовать функцию Служба экспорта данных, необходимо иметь следующие службы, учетные данные и привилегии.

  • Подписка Microsoft Dynamics 365 Online. Только пользователи, которым назначена роль системного администратора Microsoft Dynamics 365, могут настроить или внести изменения в Профиль экспорта.

  • Подписка Microsoft Azure, которая включает следующие службы.

    • База данных SQL Azure или AzureSQL Server на виртуальных машинах Azure.

    • Хранилище ключей Azure.

Важно!

Чтобы использовать Служба экспорта данных, службы Microsoft Dynamics 365 Online и Хранилище ключей Azure должны работать в одном клиенте и в одной службе Microsoft Azure Active Directory.Дополнительные сведения:Интеграция Azure с Office 365

Служба База данных SQL Azure может быть в одном и том же или в другом клиенте из службы Microsoft Dynamics 365 Online.

Что следует знать перед использованием службы экспорта данных

  • Профили экспорта необходимо удалить, а затем создать повторно, когда выполняется любое из приведенных ниже действий в экземпляре Microsoft Dynamics 365 Online.

    • Восстановление экземпляра.

    • Копирование (полное или минимальное) экземпляра.

    • Сброс экземпляра.

    • Перемещение экземпляра в другую страну или регион.

    Для этого удалите Профиль экспорта в представлении ПРОФИЛИ ЭКСПОРТА, затем удалите таблицы и хранимые процедуры, а затем создайте новый профиль.Дополнительные сведения:Удаление всех таблиц и хранимых процедур профиля экспорта данных

  • Служба экспорта данных не работает в экземплярах в песочнице Microsoft Dynamics 365 Online, в которых включен параметр Включить режим администрирования.Дополнительные сведения:Режим администрирования

  • Служба экспорта данных не отбрасывает (не удаляет) связанные таблицы, столбцы или сохраненных объекты процедур в целевой База данных SQL Azure, когда выполняются следующие действия.

    • Объект удален в Microsoft Dynamics 365 Online .

    • Поле удалено в Microsoft Dynamics 365 Online .

    • Объект удален из Профиль экспорта.

    Эти элементы необходимо удалить вручную.Удаление таблиц и хранимых процедур профиля экспорта данных для определенной сущности

    Уведомления об удалении метаданных регистрируются в папке unprocessablemessages.Обработка ошибок и мониторинг

Профиль экспорта

Для экспорта данных из Microsoft Dynamics 365 Online администратор Microsoft Dynamics 365 Online создает Профиль экспорта. Несколько профилей можно создать и активировать для синхронизации данных в разных базах данных назначения одновременно.

Профиль экспорта — это базовая концепция Служба экспорта данных.Профиль экспорта собирает информацию о настройке и конфигурации для синхронизации данных с целевой базой данных. В Профиль экспорта администратор включает список сущностей, которые требуется экспортировать в целевую базу данных. После активации Профиль экспорта начинается автоматическую синхронизацию данных. Сначала экспортируются все данные, соответствующие каждой из выбранных сущностей. В дальнейшем почти в режиме реального времени непрерывно с помощью механизма push синхронизируются только изменения данных по мере их появления в записях или метаданных сущностей в Microsoft Dynamics 365 Online. Поэтому не требуется создавать расписание для извлечения данных из Microsoft Dynamics 365 Online.

Только сущности, для которых включено отслеживание изменений, можно добавить в Профиль экспорта. Примите во внимание, что для большинства обычных сущностей Microsoft Dynamics 365, которые захватывают данные, отслеживание изменений включено. Настраиваемые сущности необходимо явно включить для отслеживания изменений перед добавлением их в Профиль экспорта.Дополнительные сведения:Включение отслеживания изменений для управления синхронизацией данных

Служба экспорта данных синхронизирует как метаданные, так и данные. Каждая сущность преобразуется в одну таблицу, а каждое поле преобразуется в столбец в таблице целевой базы данных. Имена таблиц и столбцов используют имя схемы метаданных Microsoft Dynamics 365.

После активации Профиль экспорта собирает статистику для синхронизации данных, которая помогает обеспечить рабочую видимость и диагностику экспортированных данных.

Синхронизация данных, доступная с профилем экспорта

Категория

Возможность

Поддерживаемые типы данных

Начальная синхронизация

Метаданные — основные типы данных

Типы данных: целое число, число с плавающей запятой, десятичное число, одна строка текста, несколько строк текста, дата и время.

Начальная синхронизация

Метаданные — дополнительные типы данных

Валюта, PartyList, набор параметров, статус, причина состояния, поиск (включая поиск типа "Клиент" и "В отношении"). Тип PartyList доступен только для экспорта версии 8.1 и выше.

Начальная синхронизация

Данные — основные типы

Все основные типы данных.

Начальная синхронизация

Данные — дополнительные типы

Все дополнительные типы данных.

Разностная синхронизация

Изменение схемы — основные типы

Добавление или изменение изменения поля, все основные типы данных.

Разностная синхронизация

Изменение схемы — дополнительные типы

Добавление или изменение изменения поля, все дополнительные типы данных.

Разностная синхронизация

Изменение данных — основные типы

Все основные типы данных.

Разностная синхронизация

Изменение данных — дополнительные типы

Все дополнительные типы данных, такие как PartyList.

Создание профиля экспорта

Перед созданием Профиль экспорта убедитесь, что соблюдены следующие требования.

  • Решение Служба экспорта данных установлено в вашем экземпляре Microsoft Dynamics 365 Online.

  • Поддерживайте строку подключения База данных SQL в Хранилище ключей и скопируйте URL-адрес Хранилище ключей для предоставления в Профиль экспорта. Дополнительные сведения: Microsoft Azure: начало работы с хранилищем ключей Azure

  • Для сущностей, которые добавляются в Профиль экспорта, включено отслеживание изменений.Дополнительные сведения:Включение отслеживания изменений для управления синхронизацией данных

  • В службе База данных SQL есть достаточно места для хранения данных Microsoft Dynamics 365.

  • Вы являетесь системным администратором в экземпляре Microsoft Dynamics 365 Online.

  1. В Microsoft Dynamics 365 Online откройте пункт Параметры > Экспорт данных.

  2. Просмотрите уведомление и щелкните Продолжить или Отмена, если не нужно экспортировать данные.

  3. Щелкните Создать, чтобы создать новый Профиль экспорта.

  4. В шаге Свойства введите следующую информацию, затем щелкните Далее для продолжения без подключения к Хранилище ключей . Если нажать Проверить, будет использован указанный вами URL-адрес Хранилище ключей для соединения с Хранилище ключей .

    • Имя. Уникальное имя профиля. Это поле является обязательным.

    • URL-адрес подключения к хранилищу ключей. URL-адрес Хранилище ключей , указывающий на строку подключения, хранящуюся с учетными данными для подключения к целевой базе данных. Это поле является обязательным.Дополнительные сведения:Настройка хранилища ключей Azure

      Важно!

      URL-адрес подключения к хранилищу ключей вводится с учетом регистра. Введите URL-адрес подключения к хранилищу ключей так, как он отображается после выполнения команд Windows PowerShell в этом разделе.

    • Схема. Имя для альтернативной схемы базы данных. Допускаются только буквы и цифры. Это поле необязательно. По умолчанию для целевой База данных SQL используется схема dbo.

    • Префикс. Префикс, используемый для имен таблиц, созданных в целевой базе данных. Это поможет легко идентифицировать таблицы, созданные для Профиль экспорта в целевой базе данных. Если указан, убедитесь, что длина префикс меньше 15 знаков. Это поле не является обязательным и допускает только буквы и цифры.

    • Число повторов. Число повторных попыток для записи в случае сбоя вставки или обновления в целевой таблице. Это поле является обязательным. Допустимые значения: от 0 до 20. Значение по умолчанию: 12.

    • Интервал повтора. Число секунд ожидания перед повторной попыткой в случае ошибки. Это поле является обязательным. Допустимые значения: от 0 до 3600. Значение по умолчанию: 5.

    • Записать журнал удаления. Необязательный параметр для ведения журнала удаленных записей.

    Вкладка "Свойства" в диалоговом окне "Создать профиль экспорта"

  5. В шаге Выберите сущности выберите сущности, которые нужно экспортировать в целевую База данных SQL, затем нажмите Далее.

    Вкладка "Выбор сущностей" в диалоговом окне "Создать профиль экспорта"

  6. В шаге Выберите отношения можно синхронизировать существующие отношения M:N (многие-ко-многим) с сущностями, выбранными на предыдущем шаге. Нажмите кнопку Далее.

    Создание профиля экспорта — Управление отношениями — Выбор отношений

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

    Вкладка "Сводка" в диалоговом окне "Создать профиль экспорта"

Изменение существующего профиля экспорта

Можно добавить или удалить сущности и связи в существующем Профиль экспорта, который необходимо реплицировать.

  1. В Microsoft Dynamics 365 (сетевая версия) откройте пункт Параметры > Экспорт данных.

  2. В представлении "Все профили экспорта данных" выберите Профиль экспорта, который требуется изменить.

    Выбор профиля экспорта

  3. На панели действий щелкните УПРАВЛЕНИЕ СУЩНОСТЯМИ для добавления или удаления сущностей для экспорта данных. Для добавления или удаления отношений сущностей щелкните УПРАВЛЕНИЕ ОТНОШЕНИЯМИ.

    Управление сущностями или отношениями сущностей

  4. Выберите сущности или отношения сущностей для добавления или удаления.

    Выбор сущностей или отношений сущностей для добавления или удаления

  5. Щелкните Обновить, чтобы отправить изменения в Профиль экспорта.

Важно!

При удалении сущности или отношения сущности из Профиль экспорта соответствующая таблица не переносится в целевую базу данных. Прежде чем повторно добавлять удаленную сущность, сначала необходимо переместить соответствующую таблицу в целевую базу данных. Чтобы переместить таблицу сущностей, см. раздел Удаление таблиц и хранимых процедур профиля экспорта данных для определенной сущности.

В таблице приведены сведения для целевой базы данных Azure SQL

Служба экспорта данных создает таблицы как для данных, так и для метаданных. Таблица создается для каждой сущности и отношения M:N, которые синхронизируются.

После активации Профиль экспорта эти таблицы создаются в целевой базе данных. Это системные таблицы, и они не будут содержать поля SinkCreatedTime и SinkModifiedTime.

Имя таблицы

Создано

<префикс>_GlobalOptionsetMetadata

После активации Профиль экспорта.

<префикс>_OptionsetMetadata

После активации Профиль экспорта.

<префикс>_StateMetadata

После активации Профиль экспорта.

<префикс>_StatusMetadata

После активации Профиль экспорта.

<префикс>_TargetMetadata

После активации Профиль экспорта.

<префикс>_AttributeMetadata

После активации Профиль экспорта.

<префикс>_DeleteLog

После активации Профиль экспорта, если включен параметр удаления журналов.

Разрешение проблем синхронизации

Даже после нескольких повторных попыток могут возникать ошибки синхронизации записей из-за ограничений хранилища базы данных или блокировки таблицы по причине выполняемых запросов. Чтобы устранить эти ошибки, можно принудительно выполнить повторную синхронизацию только отклоненных записей или выполнить повторную синхронизацию всех записей.

  1. Просмотрите профили экспорта, чтобы найти профили с ошибками синхронизации записей. Для этого просмотрите профили данных в области синхронизации или откройте Профиль экспорта, например этот профиль, имеющий ошибку синхронизации записей сущностей контактов.

    DataExport_failed_records_exist

  2. Изучите источник ошибки синхронизации и устраните ее.Дополнительные сведения:Обработка ошибок и мониторинг

  3. После устранения проблемы выполните повторную синхронизацию отклоненных записей.

    Примечание

    Неудачная синхронизация записей — общедоступная предварительная версия.

    • Функции предварительного ознакомления — это функция, работа над которой еще не завершена, но которая предоставляется клиентам до официального выпуска, чтобы они могли опробовать ее и предоставить разработчику свои отзывы. Функции предварительного ознакомления не предназначены для использования в рабочей среде, их функциональность может быть ограничена.

    • Мы предполагаем, что эта функция будет изменена, поэтому не следует использовать ее в рабочей среде. Используйте ее только в средах тестирования и разработки.

    • Корпорация Майкрософт не предоставляет поддержку этой функции, предназначенной для предварительного ознакомления. Служба технической поддержки Microsoft Dynamics 365 не рассматривает обращения и не отвечает на вопросы, связанные с этой функцией. Функции для предварительного ознакомления не предназначены для использования в рабочей среде; на них распространяются дополнительные условия использования.

    1. Войдите в экземпляр Microsoft Dynamics 365 Online и перейдите в раздел Параметры > Экспорт данных.

    2. Откройте Профиль экспорта, который содержит ошибки синхронизации.

    3. На панели инструментов Профиль экспорта щелкните ПОВТОРНАЯ СИНХРОНИЗАЦИЯ ЗАПИСЕЙ С ОШИБКАМИ.

    4. Нажмите кнопку OK после успешного завершения повторной синхронизации отклоненных записей в диалоговом окне подтверждения.

      Уведомление об успешной повторной синхронизации

    5. Проверьте, что Профиль экспорта не содержит уведомления об отклоненных записях, открыв профиль экспорта данных и просмотрев счетчик Уведомления о сбое на вкладке СВОЙСТВА И ОБЗОР, который должен иметь значение 0. Щелкните ОБНОВИТЬ на панели инструментов Профиль экспорта, чтобы убедиться, что значение Уведомления о сбое актуально.

      Ноль записей не прошли индикацию

  4. Если ошибки синхронизации записей сохраняются, после попытки выполнить повторную синхронизацию, выполнив предыдущие шаги, переместите таблицы, типы и хранимые процедуры из целевой базы данных, а затем удалите и добавьте сущности назад в Профиль экспорта.

    1. Удалите связанные объекты базы данных в целевой База данных SQL Azure. Например, если у вас постоянно возникают проблемы с синхронизацией сущностей интересов, перетащите таблицы, типы и хранимые процедуры интересов из целевой База данных SQL Azure.Дополнительные сведения:Удаление таблиц и хранимых процедур профиля экспорта данных для определенной сущности

    2. Удалите сущности, например сущность интереса, из Профиль экспорта.Дополнительные сведения:Изменение существующего профиля экспорта

    3. Добавьте сущность, например сущность интересов, обратно в Профиль экспорта и активируйте профиль.

Обработка ошибок и мониторинг

Чтобы просмотреть состояние синхронизации Профиль экспорта, перейдите в раздел Параметры > Экспорт данных и откройте Профиль экспорта. На вкладке СУЩНОСТИ отображается состояние синхронизации, включая столбец Отклоненные записи для записей, которые не могут быть синхронизированы. Для любых сбойных записей можно загрузить список таких записей, включающий причину состояния, нажав ОТКЛОНЕННЫЕ ЗАПИСИ на панели команд.

Командная строка "Профиль экспорта" — Кнопка "Отклоненные записи"

В Профиль экспорта можно нажать СВОЙСТВА И ОБЗОР, чтобы просмотреть свойства профиля. Нажмите ОТНОШЕНИЯ для просмотра состояния синхронизации отношений.

Просмотр подробных сведений о записях, не прошедших синхронизацию

Просмотр журналов отклоненных записей может помочь определить причину ошибок синхронизации. Чтобы просмотреть записи со ошибками в базе данных назначения Azure, используйте Microsoft Azure Storage Explorer, бесплатное отдельное приложение, позволяющее легко работать с данными хранилища Azure. Дополнительные сведения: Microsoft Azure Storage Explorer.

  1. В Dynamics 365 откройте пункт Параметры > Экспорт данных.

  2. В представлении "Все профили экспорта данных" выберите Профиль экспорта с уведомлениями о сбоях.

    Уведомления о сбое

  3. На панели инструментов "Действия" щелкните ОТКЛОНЕННЫЕ ЗАПИСИ.

    Кнопка панели инструментов "Отклоненные записи"

  4. В диалоговом окне "Загрузить отклоненные записи" щелкните Копировать URL-адрес большого двоичного объекта, а затем нажмите кнопку OK.

    Диалоговое окно "Загрузить отклоненные записи"

    Примечание

    URL-адрес большого двоичного объекта действует в течение 24 часов. По прошествии 24 часов повторите описанные выше шаги для создания нового URL-адреса большого двоичного объекта.

  5. Запустите Microsoft Azure Storage Explorer.

  6. В Microsoft Azure Storage Explorer щелкните Подключиться к хранилищу Azure.

  7. Вставьте URL-адрес из буфера обмена в окне Подключиться к хранилище Azure и нажмите кнопку Далее.

    URL-адрес хранилища

  8. На странице Сводка подключения" щелкните Подключить.

  9. Azure Storage Explorer подключится к базе данных назначения. Если отклоненные записи существуют для Профиль экспорта, Azure Storage Explorer отобразит папки синхронизации отклоненных записей.

Структура папок и файлы журнала синхронизации отклоненных записей

URL-адрес хранилища BLOB-объектов Azure для отклоненных записей указывает на расположение со следующей структурой папок:

  • data. Эта папка содержит уведомления об отклоненных данных и связанный JSON для данных записей.

  • metadata. Эта папка содержит уведомления об отклоненных метаданных и связанный JSON для метаданных.

  • failurelog. Эта папка содержит журналы со сведениями об ошибках синхронизации и причине ошибок.

  • forcerefreshfailurelog. Эта папка содержит ошибки из последнего запуска команды отклоненных записей Служба экспорта данных, используемой для повторной синхронизации отклоненных записей.

  • unprocessablemessages. Эта папка содержит уведомления о данных, которые не были обработаны по причине удаления данных или метаданных и связанного JSON.

Папки failurelog и forcerefreshfailurelog структурированы следующим образом: Год\Месяц\День\Час для быстрого поиска последних ошибок. Все отклоненные записи старше 30 дней удаляются.

Ниже приводится пример файла журнала, который указывает ошибку синхронизации записи сущности "Контакт".

Сущность: контакт, RecordId: 459d1d3e-7cc8-e611-80f7-5065f38bf1c1, NotificationTime: 28.12.2016 12:32:39, ChangeType: обновить, FailureReason: достигнута квота по размеру базы данных 'tempdb'. Разделите или удалите данные, удалите индексы или просмотрите документацию, чтобы найти возможные решения проблемы. Инструкция была отменена.

Распространенные причины ошибок синхронизации записей

Вот несколько причин возникновения ошибок синхронизации записей.

  • Недостаточное хранилище для целевой базы данных. Прежде чем приступить к повторной синхронизации отклоненных записей, увеличьте объем или освободите место в хранилище База данных SQL Azure при необходимости. Если возникает эта проблема, сообщение, аналогичное этому, регистрируется в журнале ошибок.

    Достигнут достигнута квота по размеру базы данных "имя_базы_данных". Разделите или удалите данные, удалите индексы или просмотрите документацию, чтобы найти возможные решения проблемы.

  • Истекает время ожидания синхронизации с База данных SQL Azure. Это может произойти в процессе начальной синхронизации профиля экспорта данных при наличии больших объемов данных, которые обрабатываются одновременно. Если возникает эта проблема, выполните повторную синхронизацию отклоненных записей.Разрешение проблем синхронизации

Рекомендации по использованию базы данных SQL Azure с экспортом данных

  • Чтобы избежать ошибок синхронизации вследствие регулирования ресурсов, рекомендуется иметь База данных SQL Azure Premium P1 или лучший план при использовании Служба экспорта данных.Дополнительные сведения:Ограничения ресурсов базы данных SQL Azure и База данных SQL Цены

  • Настройте База данных SQL Azure для использования изоляции моментального снимка (RCSI) для рабочих нагрузок, выполняемых одновременно в целевой базе данных, которые исполняют длительные запросы на чтение, такие как отчетность и задания ETL. Это позволит уменьшить количество ошибок истечения времени ожидания, которые могут возникнуть в Служба экспорта данных из-за конфликтов чтения\записи.

О латентности синхронизации данных

Архитектура Служба экспорта данных разработана, чтобы синхронизировать изменения данных в целевой базе данных с использованием push-механизм путем прослушивания изменений по мере их возникновения в Dynamics 365. Служба стремится передавать данные в течение несколько минут, однако есть ряд факторов, которые могут влиять на сквозную латентность синхронизации.

Факторы, которые влияют на продолжительность синхронизации, включают следующее:

  • Текущая рабочая нагрузка на Dynamics 365.

  • Частота изменения данных в Dynamics 365.

  • Число сущностей, добавленных в каждый профиль экспорта, и их атрибутов.

  • Быстродействие SQL Server. Например:

    • Время настройки соединения SQL.

    • Время выполнения инструкций SQL.

На основе данных службы мониторинга было замечено, что большинство текущих дельта-синхронизаций завершается в течение 15 минут, когда служба работает в следующих условиях:

  • Синхронизация, которая выполняется, является дельта-синхронизацией, а не первичной синхронизацией. Дельта-синхронизация предназначено только для операций изменения данных, которые включают транзакции создания, обновления и удаления записей. Обратите внимание, что дельта-синхронизация начинается после завершения начальной синхронизации.

  • Максимальная частота изменения данных в Dynamics 365 для всех сущностей в профиле экспорта менее 3000 записей за час. Любое резкое увеличение частоты изменения данных из-за массового изменения записей, превышающее максимальную частоту изменения данных, вызовет дополнительную латентность.

  • Каждая сущность, добавленная в профиль экспорта, имеет менее 150 атрибутов.

  • Подключение базы данных или выполнение инструкции SQL завершается менее чем за 10 секунд. Если данное ограничение превышено, это приведет в дополнительной латентности.

  • В процессе синхронизации не происходит ошибок подключения к базе данных назначения или ошибок выполнения инструкций SQL.

При выполнении указанных выше условий типичная латентность синхронизации составляет 15 минут. Корпорация Корпорация Майкрософт не предоставляет никаких соглашений об уровнях обслуживания (SLA) для Служба экспорта данных и не дает никаких гарантий или обязательств в отношении времени латентности синхронизации.

Настройка хранилища ключей Azure

Запустите описанный здесь скрипт Windows PowerShell в качестве администратора учетной записи Azure для предоставления разрешения функции Служба экспорта данных, чтобы она могла получить доступ к вашему хранилищу ключей Azure. Данный скрипт показывает URL-адрес хранилища ключей, необходимый для создания Профиль экспорта, который используется для доступа к строке подключения.

Перед запуском скрипта замените заполнители для следующих переменных.

  • $subscriptionId. Код подписки на Azure. Код подписки отображается при выполнении команды Login-AzureRmAccount.

  • $keyvaultName. Выберите имя для существующего или нового Хранилище ключей . Имя используется для ссылки на Хранилище ключей . В этом примере используется имя ContosoKeyVault. Это имя будет использоваться для других командлетов Хранилище ключей .

  • $secretName. Укажите имя, используемое для программно защищенного ключа для Хранилище ключей . Если защищенный ключ не существует, он создается с использованием указанного секретного имени. В этом примере используется имя ContosoDataExportSecret.

  • $resourceGroupName. Укажите имя группы ресурсов Azure, которое требуется использовать. Если группа ресурсов еще не существует, будет создана новая группа с указанным именем. В этом примере используется имя ContosoResourceGroup1.

  • $location. Укажите местоположение, в котором размещена или должна быть размещена группа ресурсов, например West US.

  • $connectionString. Строка подключения к База данных SQL Microsoft Azure. Можно использовать строку подключения ADO.NET, выводимую на панель мониторинга Azure.

  • $organizationIdList = разделенный запятыми список разрешенных организаций Microsoft Dynamics 365, перечисленных по коду организации (organizationId), чтобы разрешить их для Служба экспорта данных. Найти выяснить код организации, в Microsoft Dynamics 365 перейдите в Параметры > Настройки > Ресурсы для разработчиков. Код организации указан в поле Справочная информация экземпляра.

  • $tenantId. Определяет код клиента Azure Active Directory, с которым связаны экземпляры Microsoft Dynamics 365. Дополнительные сведения: Поиск кода клиента Azure Active Directory для экземпляров Dynamics 365

# -------------------------------------------------------------------------------- #
    #  Provide the value for the following parameters before executing the script
$subscriptionId = 'ContosoSubscriptionId'   
$keyvaultName = 'ContosoKeyVault'
    $secretName = 'ContosoDataExportSecret'
    $resourceGroupName = 'ContosoResourceGroup1'
    $location = 'West US'
    $connectionString = 'AzureSQLconnectionString'
$organizationIdList = 'ContosoSalesOrg1_id, ContosoSalesOrg2_id'
$tenantId = 'tenantId'
    # -------------------------------------------------------------------------------- #

# Login to Azure account, select subscription and tenant Id
Login-AzureRmAccount
Set-AzureRmContext -TenantId $tenantId -SubscriptionId $subscriptionId

# Create new resource group if not exists.
$rgAvail = Get-AzureRmResourceGroup -Name $resourceGroupName -Location $location -ErrorAction SilentlyContinue
if(!$rgAvail){
    New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
}

# Create new key vault if not exists.
$kvAvail = Get-AzureRmKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -ErrorAction SilentlyContinue
if(!$kvAvail){
    New-AzureRmKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -Location $location
    # Wait few seconds for DNS entry to propagate
    Start-Sleep -Seconds 15
}

# Create tags to store allowed set of Organizations.
$secretTags = @{}
foreach ($orgId in $organizationIdList.Split(',')) {
    $secretTags.Add($orgId.Trim(), $tenantId)
}

# Add or update a secret to key vault.
$secretVaule = ConvertTo-SecureString $connectionString -AsPlainText -Force
$secret = Set-AzureKeyVaultSecret -VaultName $keyvaultName -Name $secretName -SecretValue $secretVaule -Tags $secretTags

# Authorize application to access key vault.
$servicePrincipal = 'b861dbcc-a7ef-4219-a005-0e4de4ea7dcf'
Set-AzureRmKeyVaultAccessPolicy -VaultName $keyvaultName -ServicePrincipalName $servicePrincipal -PermissionsToSecrets get

# Display secret url.
Write-Host "Connection key vault URL is "$secret.id.TrimEnd($secret.Version)"" 

Удаление всех таблиц и хранимых процедур профиля экспорта данных

Важно!

  • Прежде чем выполнять инструкцию SQL, убедитесь, что значения @prefix и @schema правильно настроены в инструкции.

  • Потребуется повторно создать Профиль экспорта после выполнения этой инструкции SQL.

-----------------------------------------------------------------
-- Provide the value for the following parameters
DECLARE @prefix nvarchar(32) =''
DECLARE @schema nvarchar(32) ='dbo'
-----------------------------------------------------------------

DECLARE @sql nvarchar(max) = '';

SELECT @sql += 'DROP TABLE ' + QUOTENAME([TABLE_SCHEMA]) + '.' + QUOTENAME([TABLE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] like @prefix + '_%' AND [TABLE_SCHEMA]= @schema;

PRINT @sql
EXEC SP_EXECUTESQL @sql;

PRINT 'Finished dropping all tables. Starting to drop all stored procedures now.'

SELECT @sql='';
SELECT @sql += 'DROP PROCEDURE ' + QUOTENAME([ROUTINE_SCHEMA]) + '.' + QUOTENAME([ROUTINE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[ROUTINES]
WHERE [ROUTINE_TYPE] = 'PROCEDURE' AND [ROUTINE_NAME] like @prefix + '_%' AND [ROUTINE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;

PRINT 'Finished dropping all stored procedures. Starting to drop all types now.'

SELECT @sql=''; 
SELECT @sql += 'DROP TYPE ' + QUOTENAME(SCHEMA_NAME([SCHEMA_ID])) + '.' +  QUOTENAME([NAME]) + ';'
FROM SYS.TYPES
WHERE is_user_defined = 1 AND [NAME] LIKE @prefix + '_%' AND [SCHEMA_ID]=SCHEMA_ID(@schema);

PRINT @sql
EXEC SP_EXECUTESQL @sql;

Удаление таблиц и хранимых процедур профиля экспорта данных для определенной сущности

Важно!

Прежде чем выполнять инструкцию SQL, убедитесь, что значения @prefix, @schema и @entityName правильно настроены в инструкции. В этом примере удаляются таблица, типы и хранимые процедуры сущности интересов.

-----------------------------------------------------------------
-- Provide the value for the following parameters
DECLARE @prefix nvarchar(32) ='crm'
DECLARE @schema nvarchar(32) ='dbo'
DECLARE @entityName nvarchar(32) ='lead'
-----------------------------------------------------------------
DECLARE @sql nvarchar(max) = '';

IF @prefix != '' 
BEGIN
       SET @prefix = @prefix + '_'
END

SELECT @sql += 'DROP TABLE ' + QUOTENAME([TABLE_SCHEMA]) + '.' + QUOTENAME([TABLE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] like @prefix + @entityName  AND [TABLE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;
PRINT 'Finished dropping the entity. Starting to drop the types associated with the entity'

SELECT @sql='';
SELECT @sql += 'DROP TYPE ' + QUOTENAME(SCHEMA_NAME([SCHEMA_ID])) + '.' + QUOTENAME([NAME]) + ';'
FROM SYS.TYPES
WHERE is_user_defined = 1 AND [NAME] LIKE @prefix + @entityName +'Type' 
OR [NAME] LIKE @prefix + @entityName +'IdType'
AND [SCHEMA_ID]=SCHEMA_ID(@schema);
PRINT @sql
EXEC SP_EXECUTESQL @sql;

Поиск кода клиента Azure Active Directory для экземпляров Dynamics 365

  1. Войдите на портал Azure.

  2. Перейдите в раздел Azure Active Directory > Регистрации приложений > Конечные точки.

  3. Код клиента отображается в URL-адресах конечных точек, перечисленных в подписке Azure.

Важно!

Подписка Azure может иметь несколько кодов клиента Azure Active Directory. Убедитесь, что вы выбрали правильный код клиента Azure Active Directory, связанный с экземпляром Microsoft Dynamics 365, который вы будете использовать для экспорта данных.

Статические IP-адреса базы данных Azure SQL, используемые службой экспорта данных

В База данных SQL Azure щелкните Задать брандмауэр сервера, установите для параметра Разрешить доступ к службам Azure значение ВЫКЛ., щелкните Добавить IP-адрес клиентаи добавьте IP-адреса, соответствующие региону вашей База данных SQL Azure.Дополнительные сведения:Microsoft Azure. Настройка правила брандмауэра на уровне сервера для базы данных Azure SQL с помощью портала Azure

Регион

IP-адрес

Западные США

40.112.139.218

Восточная часть США

23.96.92.86

Западная Европа

40.68.252.224

Восточная Азия

52.175.24.148

Юго-Восточная Азия

52.163.231.218

Центральная Индия

52.172.191.195

Южная Индия

52.172.51.15

Северная Европа

52.169.117.212

Западная Япония

138.91.22.196

Восточная Япония

13.73.7.177

Южная Бразилия

191.235.81.249

Юго-Восточная Австралия

40.115.78.163

Восточная Австралия

13.73.202.160

Канада (центр)

52.228.26.31

Канада (восток)

40.86.251.81

Соединенное Королевство (юг)

51.140.71.166

Соединенное Королевство (запад)

51.141.44.218

Известные проблемы и ограничения

Удаленные записи могут быть повторно вставлены в таблицу сущностей после ошибки синхронизации

После устранения ошибок синхронизации записи, которые были удалены ранее, могут быть повторно вставлены в исходную таблицу сущностей. Чтобы обойти эту проблему при возникновении ошибок синхронизации, выполните следующие действия.

  1. Создайте профили экспорта, для которых включен журнал записи/удаления. Повторно создайте существующий профиль экспорта, для которого не включен журнал записи/удаления.

  2. Создайте и выполните запрос SQL для целевой базы данных SQL Azure, в которой выполняется поиск записей в таблице DeleteLog. При обнаружении одной или нескольких записей он указывает наличие удаленных записей.

  3. Если одна или несколько записей существуют в таблице DeleteLog, создайте и выполните запрос SQL, который обнаруживает экземпляры, в которых код записи, имеющейся в таблице DeleteLog, совпадает с кодом записи в таблице EntityName, и versionNumber в deleteLog больше versionNumber в записи в таблице EntityName. При наличии соответствия кода записи удалите запись из таблицы EntityName. Например, если код записи в столбце AccountId таблицы DeleteLog совпадает с кодом записи в столбце AccountId таблицы сущностей AccountBase и versionNumber в DeleteLog больше, чем versionNumber в таблице Account, удалите запись из таблицы сущностей AccountBase.

    Важно!

    В зависимости от ваших потребностей и деловых требований, рекомендуется выполнять запросы SQL для удаления записей часто, но не в рабочие часы.

Пример запроса для удаления записи сущности.

DELETE FROM [dbo].[prefix_account] A
WHERE id IN (SELECT CONVERT(uniqueidentifier, recordid) FROM [dbo].[prefix_DeleteLog] DL WHERE DL.entityname ='account'
AND DL.VersionNumber > A.VersionNumber)

Объекты, которые не поддерживают экспорт данных

Объекты, представленные ниже, хотя и поддерживают отслеживание изменений, не поддерживаются для экспорта данных с помощью Служба экспорта данных.

Сущность

Имя таблицы

Альтернативные варианты

Действие

ActivityPointerBase

Выберите конкретные объекты действий для экспорта, например телефонный звонок, встречу, электронную почту или задачи.

Уведомление о конфиденциальности

Если используется служба экспорта данных, при активировании профиля экспорта данных из Microsoft Dynamics 365 данные добавленных в профиль сущностей отправляются в Azure. Исходная синхронизация охватывает все данные, связанные с добавленными в профиль экспорта сущностями, но впоследствии синхронизируются только новые изменения, которые постоянно отправляются в службу экспорта данных. Данные, отправленные в службу экспорта данных, временно сохраняются в Служебная шина Azure и хранилище Azure, обрабатываются в Azure Service Fabric и, наконец, синхронизируются (вставляются, обновляются или удаляются) с целевой базой данных, указанной в вашей подписке Azure. После синхронизации данных они удаляются из Служебная шина Azure и хранилища Azure. В случае сбоя во время синхронизации данных в хранилище Azure сохраняются минимальные данные, соответствующие типу сущности, коду записи и отметке времени синхронизации, позволяющие загрузить список записей, которые не были обновлены.

Администратор может в любой момент деактивировать профиль экспорта данных, чтобы прекратить синхронизацию данных. Кроме того, администратор может удалить профиль экспорта, чтобы удалить все журналы сбойных записей, а также удалить решение службы экспорта данных, чтобы прекратить использование службы экспорта данных.

Синхронизация данных между Dynamics 365 и службой экспорта данных производится непрерывно и безопасно. Во время непрерывного обмена данными между Dynamics 365 и службой экспорта данных эти данные шифруются.

Компоненты и службы Azure, необходимые для реализации службы экспорта данных, подробно рассматриваются в следующих разделах.

Примечание. Дополнительные сведения о других предложениях служб Azure см. в Центре управления безопасностью Microsoft Azure.

Azure Service Fabric

Обеспечивает API-интерфейс и вычислительные виртуальные машины Azure для обработки уведомлений о синхронизации записей, полученных из Dynamics 365, и последующей обработки для вставки, обновления или удаления данных записей в целевой базе данных. Микрослужбы, развернутые на виртуальных машинах под управлением среды выполнения Azure Service Fabric, обрабатывают все вычислительные службы, связанные с синхронизацией данных.

Служебная шина Azure

Обеспечивает шину сообщений, по которой Dynamics 365 отправляет сообщения уведомлений о синхронизации, которые обрабатываются вычислительными узлами в Azure Service Fabric. В каждом сообщении хранятся сведения, например код организации и запись, для которой выполняется синхронизация данных. В неактивном состоянии данные в служебной шине Azure не зашифрованы, но они доступны только службе экспорта данных.

Хранилище больших двоичных объектов Azure

Данные временно сохраняются в Хранилище больших двоичных объектов Azure, если данные уведомления о синхронизации записи слишком велики для хранения в сообщении или если в процессе обработки уведомления о синхронизации возник временный сбой. Эти большие двоичные объекты шифруются с помощью новейшей функции в пакете SDK хранилища Azure, обеспечивая поддержку симметричного и асимметричного шифрования и интеграцию с Хранилище ключей Azure.

Azure SQL

В База данных SQL Azure хранятся конфигурация профиля экспорта данных и показатели синхронизации данных.

См. также

AppSource: Microsoft Dynamics 365 — Служба экспорта данных
Что нового в Dynamics 365 — служба экспорта данных?
Управление данными
MSDN: Служба экспорта данных
Блок группы: Введение в Dynamics 365 – служба экспорта данных

© Корпорация Майкрософт (Microsoft Corporation), 2017. Все права защищены. Авторские права