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

Заметка

С ноября 2021 года поддержка службы экспорта данных прекращена. Служба экспорта данных продолжит работу и будет полностью поддерживаться до тех пор, пока в ноябре 2022 года не будет прекращена поддержка и срок службы. Дополнительные сведения см. в разделе https://aka.ms/DESDeprecationBlog

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

Заметка

Настоятельно рекомендуется можете экспортировать свои данные Dataverse в Azure Synapse Analytics и/или Azure Data Lake Gen2 с помощью Azure Synapse Link for Dataverse. Больше информации: Ускорение аналитики с помощью Azure Synapse Link for Dataverse

Службу экспорта данных можно использовать с приложениями для взаимодействия с клиентами (Dynamics 365 Sales, Dynamics 365 Customer Service, Dynamics 365 Field Service, Dynamics 365 Marketing и Dynamics 365 Project Service Automation).

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

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

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

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

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

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

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

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

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

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

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

    Код типа разрешения Имя разрешения
    CRTB СОЗДАТЬ ТАБЛИЦУ
    CRTY СОЗДАТЬ ТИП
    CRVW СОЗДАТЬ ПРЕДСТАВЛЕНИЕ
    CRPR СОЗДАТЬ ПРОЦЕДУРУ
    ALUS ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ
    VWDS ПРОСМОТР СОСТОЯНИЯ БАЗЫ ДАННЫХ

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

    Код типа разрешения Имя разрешения
    AL ИЗМЕНИТЬ
    В ВСТАВИТЬ
    DL УДАЛИТЬ
    SL ВЫБРАТЬ
    UP ОБНОВИТЬ
    EX ВЫПОЛНИТЬ
    RF ССЫЛКИ

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

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

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

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

  • Настройте правила брандмауэра, чтобы разрешить связь между службой экспорта данных и Azure Key Vault.

Приложения для взаимодействия с клиентами

  • Версия 9.0 или более поздняя версия среды.

  • Должна быть установлена служба экспорта данных.

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

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

Веб-браузер

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

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

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

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

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

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

    • Azure Key Vault.

Внимание

Чтобы использовать Службу экспорта данных, приложения Customer Engagement и службы Azure Key Vault должны работать в одном клиенте и в одной службе Microsoft Entra ID. Дополнительные сведения: Интеграция Azure с Microsoft 365

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

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

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

    • Восстановление среды.
    • Копирование (полное или минимальное) среды.
    • Выполнить сброс среды.
    • Перемещение среды в другую страну или регион.

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

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

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

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

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

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

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

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

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

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

Категория Возможность Поддерживаемые типы данных
Начальная синхронизация Метаданные — основные типы данных Типы данных: целое число, число с плавающей запятой, десятичное число, одна строка текста, несколько строк текста, дата и время.
Начальная синхронизация Метаданные — дополнительные типы данных Валюта, PartyList, набор параметров, статус, причина состояния, поиск (включая поиск типа "Клиент" и "В отношении"). Тип PartyList доступен только для экспорта версии 8.1 и выше.
Начальная синхронизация Данные — основные типы Все основные типы данных.
Начальная синхронизация Данные — дополнительные типы Все дополнительные типы данных.
Разностная синхронизация Изменение схемы — основные типы Добавление или изменение изменения поля, все основные типы данных.
Разностная синхронизация Изменение схемы — дополнительные типы Добавление или изменение изменения поля, все дополнительные типы данных.
Разностная синхронизация Изменение данных — основные типы Все основные типы данных.
Разностная синхронизация Изменение данных — дополнительные типы Все дополнительные типы данных, такие как PartyList.

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

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

  • Решение службы экспорта данных установлено в вашей среде.

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

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

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

  • Вы являетесь системным администратором в среде.

  1. Перейдите в раздел Параметры>Экспорт данных.

  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. Перейдите в раздел Параметры>Экспорт данных.

  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. Войдите в среду и перейдите в раздел Параметры>Экспорт данных.

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

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

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

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

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

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

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

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

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

Командная строка

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

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

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

  1. Перейдите в раздел Параметры>Экспорт данных.

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

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

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

    Кнопка панели инструментов

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

    Диалоговое окно

    Заметка

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

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

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

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

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

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

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

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

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

Действия для загрузки записей с ошибками:

  1. Укажите профиль с записями с ошибками.

    Профили экспорта данных.

  2. Выберите профиль и выберите пункт Загрузка записей с ошибками (предварительная версия) в верхней строке меню.

    Загрузка записей с ошибками (предварительная версия).

  3. В диалоговом окне Загрузка записей с ошибками отображается сортированный список последних 20 (макс.) файлов больших двоичных объектов. Выберите файл, который требуется загрузить, затем выберите Ok.

    Загрузка записей с ошибками.

  4. После загрузки откройте файл в текстовом редакторе по вашему выбору (например, в Блокноте), и просмотрите сведения для ошибок.

    Пример журнала ошибок.

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

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

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

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

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

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

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

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

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

Entity: contact, RecordId: 459d1d3e-7cc8-e611-80f7-5065f38bf1c1, NotificationTime: 12/28/2016 12:32:39 AM, ChangeType: Update, FailureReason: The database 'tempdb' has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions.  
The statement has been terminated.  

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

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

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

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

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

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

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

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

  • Чтобы улучшить эффективность запроса, рекомендуется для максимальной степени параллелизма базы данных службы экспорта данных (MAXDOP) задать значение 1. Дополнительные сведения: MSDN: Параметры памяти сервера

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

  • Регулярно обновляйте статистику базы данных в табличных и индексированных представлениях в базе данных службы экспорта данных. Дополнительные сведения: Обновление статистики

  • Контролируйте использование базы данных службы экспорта данных. Дополнительные сведения: Мониторинг производительности

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

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

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

  • Текущая рабочая нагрузка на приложения Customer Engagement.
  • Скорость изменения данных в приложениях Customer Engagement.
  • Число сущностей, добавленных в каждый профиль экспорта, и их атрибутов.
  • Производительность сервера SQL Server. Например:
    • Время настройки соединения SQL.
    • Время выполнения инструкций SQL.

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

  • Синхронизация, которая выполняется, является дельта-синхронизацией, а не первичной синхронизацией. Дельта-синхронизация предназначено только для операций изменения данных, которые включают транзакции создания, обновления и удаления записей. Обратите внимание, что дельта-синхронизация начинается после завершения начальной синхронизации.
  • Максимальная частота изменения данных в приложениях Customer Engagement для всех сущностей в профиле экспорта менее 3000 записей за час. Любое резкое увеличение частоты изменения данных из-за массового изменения записей, превышающее максимальную частоту изменения данных, вызовет дополнительную латентность.
  • Каждая сущность, добавленная в профиль экспорта, имеет менее 150 атрибутов.
  • Подключение базы данных или выполнение инструкции SQL завершается менее чем за 10 секунд. Если данное ограничение превышено, это приведет в дополнительной латентности.
  • В процессе синхронизации не происходит ошибок подключения к базе данных назначения или ошибок выполнения инструкций SQL.

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

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

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

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

  • $subscriptionId. Группа ресурсов хранилища ключей, которую требуется использовать. Если группа ресурсов еще не существует, будет создана новая группа с указанным именем. В этом примере используется имя ContosoResourceGroup1.

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

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

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

  • $tenantId. Указывает идентификатор клиента Azure Active Directory, с которым связана подписка хранилища ключей.

Внимание

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

Заметка

Убедитесь, что идентификатор пользователя, указанный в $connectionString, имеет соответствующие разрешения для целевой базы данных SQL Azure.

# -------------------------------------------------------------------------------- #
    #  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
Connect-AzAccount -Tenant $tenantId -Subscription $subscriptionId

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

# Create new key vault if not exists.
$kvAvail = Get-AzKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -ErrorAction SilentlyContinue
if(!$kvAvail){
    New-AzKeyVault -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.
$secretValue = ConvertTo-SecureString $connectionString -AsPlainText -Force
$secret = Set-AzKeyVaultSecret -VaultName $keyvaultName -Name $secretName -SecretValue $secretValue -Tags $secretTags

# Authorize application to access key vault.
$servicePrincipal = 'b861dbcc-a7ef-4219-a005-0e4de4ea7dcf'
Set-AzKeyVaultAccessPolicy -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;

Как удалить службу экспорта данных из администрирования Power Platform

  1. Перейдите к Дополнительным параметрам.
  2. Выберите Параметры > Настройки, затем выберите Решения.
  3. Выберите DataExportService, опубликованный Microsoft Dynamics 365, а затем выберите Удалить.

Поиск идентификатора клиента Microsoft Entra для вашего клиента

  1. Войдите на портал Azure.
  2. В разделе Службы Azure выберите Свойства клиента.
  3. Выберите значение в поле Идентификатор клиента.

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

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

Область/регион Новый IP-адрес Старый IP-адрес
Западная часть США 20.245.127.60 13.64.148.9
Восточная часть США 172.174.41.63 20.228.153.81
Восточная Азия 20.239.192.9 104.208.84.217
Юго-Восточная Азия 20.24.15.60 20.205.153.14
Центральная Индия 20.219.158.75 20.198.113.107
Южная Индия 52.140.54.95 104.211.204.18
Западная Европа 20.126.43.104 40.68.244.253
Северная Европа 20.166.94.137 20.238.83.32
Западная Япония Без изменений 104.214.144.93
Восточная Япония 52.253.104.175 20.89.138.246
Южная Бразилия 4.228.211.102 20.197.186.17
Юго-Восточная Австралия Без изменений 20.70.112.80
Восточная Австралия 20.5.88.96 20.213.58.3
Центральная Канада 20.220.227.230 20.151.173.107
Восточная Канада 40.86.216.207 52.229.109.91
Соединенное Королевство (запад) 51.142.173.150 20.68.113.18
Соединенное Королевство (юг) 20.117.159.198 20.117.89.184

Заметка

Клиенты из Северной Америки должны добавить IP-адрес в утвержденный список как для восточной, так и для западной части США.

Чтобы предотвратить любые сбои в синхронизации данных, клиенты должны сохранить новый IP-адрес и старый IP-адрес.

Известные проблемы

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

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

  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 A 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)

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

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

Объект Имя таблицы Альтернативные варианты
Действие (Activity) ActivityPointerBase Выберите конкретные объекты действий для экспорта, например телефонный звонок, встречу, электронную почту или задачи.

Невозможно создать строку, большую допустимого максимального размера строки (8K)

Если в журналах ошибок отображается сообщение "Невозможно создать строку размером (размер), которая больше допустимого максимального размера строки 8060", вы столкнулись с проблемой, когда вы превышаете ограничение на максимальный допустимый размер строки. Служба экспорта данных не поддерживает размер строки более максимально допустимого размера строки 8K. Чтобы устранить эту ошибку, необходимо соблюдать ограничения на размер строк.

Длина строки в источнике превышает схему пункта назначения для ColumnName

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

Вложения не поддерживаются

Экспорт вложений, таких как documentbody в таблице Аннотация, не поддерживается.

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

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

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

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

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

Центр управления безопасностью Microsoft Azure

Azure Service Fabric

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

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

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

Хранилище BLOB-объектов Azure

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

Azure SQL

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

См. также

Обзор отношений сущностей
Служба экспорта данных
Блок группы: Введение в службу экспорта данных