Устранение неполадок с подключением конечных точек XMLA

Конечные точки XMLA в Power BI используют собственный протокол обмена данными Analysis Services для доступа к наборам данных Power BI. Поэтому устранение неполадок в конечной точке XMLA во многом аналогично устранению неполадок типичного подключения Analysis Services. Однако есть некоторые различия, связанные с Power BI.

Перед началом

Прежде чем устранять неполадки в сценарии конечной точки XMLA, ознакомьтесь с основными сведениями, изложенными в статье Возможность подключения к набору данных с помощью конечной точки XMLA (предварительная версия). Здесь рассматриваются наиболее распространенные варианты использования конечной точки XMLA. Другие руководства по устранению неполадок со шлюзами в Power BI и устранению неполадок с анализом в Excel также могут быть полезными.

Включение конечной точки XMLA

Конечную точку XMLA можно включить в емкости Power BI Premium, Premium на пользователя и Power BI Embedded. В небольших емкостях, таких как емкость A1 (с размером памяти всего 2,5 ГБ), при попытке задать конечную точку XMLA для чтения и записи и выборе Применить может возникнуть ошибка в параметрах емкости. Ошибка будет содержать следующее сообщение There was an issue with your workload settings. Try again in a little while. (Возникла проблема в параметрах рабочей нагрузки. Повторите попытку позже.)

Вот несколько способов устранить эту проблему:

  • Ограничьте потребление памяти другими службами в емкости, например потоками данных, до 40 % или ниже или полностью отключите ненужную службу.
  • Повысьте емкость, перейдя на больший номер SKU. Например, проблема конфигурации будет решена без отключения потоков данных, если обновить емкость с A1 до A3.

Помните, что необходимо также включить параметр Экспорт данных на уровне клиента на портале администрирования Power BI. Этот параметр также необходим для функции "Анализировать в Excel".

Установление подключения клиента

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

Соединение с субъектом-службой

Если вы включили параметры клиента, чтобы разрешить субъектам-службам использовать API-интерфейсы Power BI, как описано в разделе Включение субъектов-служб, можно подключиться к конечной точке XMLA с помощью субъекта-службы. Помните, что субъекту-службе требуется тот же уровень разрешений доступа на уровне рабочей области или набора данных, что и обычным пользователям.

Чтобы использовать субъект-службу, обязательно укажите сведения об удостоверении приложения в строке подключения следующим образом:

  • User ID=<app:appid@tenantid>
  • Password=<application secret>

Пример:

Data Source=powerbi://api.powerbi.com/v1.0/myorg/Contoso;Initial Catalog=PowerBI_Dataset;User ID=app:91ab91bb-6b32-4f6d-8bbc-97a0f9f8906b@19373176-316e-4dc7-834c-328902628ad4;Password=6drX...;

Если вы получаете следующую ошибку:

We cannot connect to the dataset due to incomplete account information. For service principals, make sure you specify the tenant ID together with the app ID using the format app: <appId>@<tenantId>, then try again. (Не удается подключиться к набору данных из-за неполной информации об учетной записи. Для субъектов-служб убедитесь, что идентификатор клиента указан вместе с идентификатором приложения в следующем формате приложения: <appId>@<tenantId>. Затем повторите попытку.)

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

Вы также можете указать идентификатор приложения без идентификатора клиента. Однако в этом случае необходимо заменить псевдоним myorg в URL-адресе источника данных фактическим идентификатором клиента. После этого Power BI может выбрать субъект-службу в правильном клиенте. Но рекомендуется использовать псевдоним myorg и указать идентификатор клиента вместе с идентификатором приложения в параметре идентификатора пользователя.

Подключение к Azure Active Directory B2B

Благодаря поддержке Azure Active Directory (Azure AD) "бизнес — бизнес" (B2B) в Power BI вы можете предоставить внешним гостевым пользователям доступ к наборам данных через конечную точку XMLA. Включите параметр Предоставление внешним пользователям общего доступа к содержимому на портале администрирования Power BI. Дополнительные сведения см. в статье Предоставление содержимого Power BI внешним гостевым пользователям с помощью Azure AD B2B.

Развертывание набора данных

Вы можете развернуть проект табличной модели в Visual Studio (SSDT) в рабочую область, назначенную емкости Premium, как и в ресурс сервера в Azure Analysis Services. Но при развертывании необходимо учитывать некоторые аспекты. Обязательно ознакомьтесь с разделом Развертывание проектов модели из Visual Studio (SSDT) статьи о подключении к набору данных с помощью конечной точки XMLA.

Развертывание новой модели

В конфигурации по умолчанию Visual Studio пытается обработать модель как часть операции развертывания, чтобы загрузить данные из источников данных в набор данных. Как описано в разделе Развертывание проектов модели из Visual Studio (SSDT), эта операция может завершиться ошибкой, так как учетные данные источника данных не могут быть указаны в ходе операции развертывания. Вместо этого, если учетные данные для источника данных еще не определены для какого-либо из существующих наборов, необходимо указать учетные данные источника в параметрах набора данных с помощью пользовательского интерфейса Power BI (Наборы данных > Параметры > Учетные данные источника данных > Изменить учетные данные). Определив учетные данные источника данных, Power BI может автоматически применять учетные данные к этому источнику данных для любого нового набора данных, после того как успешно выполнено развертывание метаданных и создан набор данных.

Если Power BI не удается привязать новый набор данных к учетным данным источника данных, появится сообщение об ошибке "Не удается обработать базу данных. Причина: Не удалось сохранить изменения на сервере." с кодом ошибки "DMTS_DatasourceHasNoCredentialError", как показано ниже.

Ошибка развертывания модели

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

Параметр Не обрабатывать

Создание проекта с помощью существующего набора данных

Создание табличного проекта в Visual Studio путем импорта метаданных из существующего набора данных не поддерживается. Однако можно подключиться к набору данных с помощью SQL Server Management Studio, создать скрипт для метаданных и повторно использовать его в других табличных проектах.

Перенос набора данных в Power BI

Рекомендуется для табличных моделей указать уровень совместимости 1500 (или выше). Этот уровень совместимости поддерживает большинство возможностей и типов источников данных. Более поздние уровни совместимости имеют обратную совместимость с предыдущими уровнями.

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

При уровне совместимости 1500 Power BI поддерживает следующие типы данных:

  • Источники данных поставщика (прежние версии со строкой подключения в метаданных модели).
  • Структурированные источники данных (представлены на уровне совместимости 1400).
  • Объявления источников данных в строке M (как Power BI Desktop объявляет их).

Рекомендуется использовать структурированные источники данных, которые Visual Studio создает по умолчанию при работе с потоком данных импорта. Однако если планируется перенос существующей модели в Power BI, использующей источник данных поставщика, убедитесь, что источник данных поставщика использует поддерживаемый поставщик данных. В частности, драйвер Microsoft OLE DB для SQL Server и любых сторонних драйверов ODBC. Для драйвера OLE DB для SQL Server необходимо переключить определение источника данных на поставщика данных .NET Framework для SQL Server. Для сторонних драйверов ODBC, которые могут быть недоступны в службе Power BI, необходимо переключиться на определение структурированного источника данных.

Также рекомендуется заменить устаревший драйвер Microsoft OLE DB для SQL Server (SQLNCLI11) в определениях источников данных SQL Server на поставщика данных .NET Framework для SQL Server.

В следующей таблице приведен пример строки подключения поставщика данных .NET Framework для SQL Server, в которой заменяется соответствующая строка подключения для драйвера OLE DB для SQL Server.

Драйвер OLE DB для SQL Server Поставщик данных .NET Framework для SQL Server
Provider=SQLNCLI11;Data Source=sqldb.database.windows.net;Initial Catalog=AdventureWorksDW;Trusted_Connection=yes; Data Source=sqldb.database.windows.net;Initial Catalog=AdventureWorksDW2016;Integrated Security=SSPI;Encrypt=true;TrustServerCertificate=false

Источники секций перекрестных ссылок

Так же как существует несколько типов источников данных, существует и несколько типов источников секций, которые могут быть включены в табличную модель для импорта данных в таблицу. В частности, секция может использовать источник секции запроса или M. Эти типы источников секций, в свою очередь, могут ссылаться на источники данных поставщика или структурированные источники данных. Табличные модели в Azure Analysis Services поддерживают перекрестные ссылки на эти различные типы источников данных и секций, а Power BI обеспечивает более строгую связь. Источники секций запросов должны ссылаться на источники данных поставщика, а источники разделов M — на структурированные источники данных. Другие сочетания не поддерживаются в Power BI. Если требуется выполнить миграцию набора данных с перекрестными ссылками, в следующей таблице описаны поддерживаемые конфигурации:

Источник данных Источник секции Комментарии Поддержка конечной точки XMLA
Поставщик источника данных Источник секции запроса Ядро AS использует стек подключений на основе картриджей для доступа к источнику данных. Да
Поставщик источника данных Источник секции M Ядро AS преобразует источник данных поставщика в универсальный структурированный источник данных, а затем использует подсистему гибридного веб-приложения для импорта данных. Нет
Структурированный источник данных Источник секции запроса Ядро AS заключает в оболочку собственный запрос к источнику секции в выражении M, а затем использует подсистему гибридного веб-приложения для импорта данных. Нет
Структурированный источник данных Источник секции M Ядро AS использует подсистему гибридного веб-приложения для импорта данных. Да

Источники данных и олицетворение

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

Олицетворение учетной записи службы

Детализированная обработка

В Power BI при запуске запланированного обновления или обновления по запросу обычно обновляется весь набор данных. Во многих случаях более эффективно выполнять обновление выборочно. Вы можете выполнять задачи детализированной обработки в SQL Server Management Studio (SSMS), как показано ниже, или с помощью средств или сценариев сторонних разработчиков.

Обработка таблиц в SSMS

Переопределения в команде Refresh TMSL

Переопределения в команде Refresh (TMSL) позволяют пользователям выбрать другое определение запроса секции или определение источника данных для операции обновления.

Ошибки в среде SSMS — Premium 2-го поколения

выполнение запроса.

При подключении к рабочей области в емкости Premium 2-го поколения или Embedded 2-го поколения в SQL Server Management Studio может отображаться следующая ошибка:

Executing the query ...
Error -1052311437: We had to move the session with ID '<Session ID>' to another Power BI Premium node. Moving the session temporarily interrupted this trace - tracing will resume automatically as soon as the session has been fully moved to the new node.

Это информационное сообщение, которое можно игнорировать в SSMS 18.8 и более поздних версий, так как клиентские библиотеки восстановят подключение к серверу автоматически. Обратите внимание, что клиентские библиотеки, установленные со средой SSMS версии 18.7.1 или ниже, не поддерживают трассировку сеансов. Скачайте актуальную версию SSMS.

Операции обновления

При использовании SSMS v18.7.1 или более ранней версии для выполнения длительной операции обновления (> 1 минуты) на набор данных в емкости Premium 2-го поколения или Embedded 2-го поколения среда SSMS может вывести сообщение об ошибке следующего вида, даже если операция обновления выполнена успешно:

Executing the query ...
Error -1052311437:
The remote server returned an error: (400) Bad Request.

Technical Details:
RootActivityId: 3716c0f7-3d01-4595-8061-e6b2bd9f3428
Date (UTC): 11/13/2020 7:57:16 PM
Run complete

Это вызвано известной проблемой в клиентских библиотеках, при которой состояние запроса на обновление неверно отслеживается. Проблема устранена в SSMS 18.8 и более поздних версиях. Скачайте актуальную версию SSMS.

Ошибка подключения к серверу в SSMS

При подключении к рабочей области Power BI с помощью SQL Server Management Studio (SSMS) может появиться следующая ошибка:

TITLE: Connect to Server
------------------------------
Cannot connect to powerbi://api.powerbi.com/v1.0/[tenant name]/[workspace name].
------------------------------
ADDITIONAL INFORMATION: 
The remote server returned an error: (400) Bad Request.
Technical Details:
RootActivityId: 
Date (UTC): 10/6/2021 1:03:25 AM (Microsoft.AnalysisServices.AdomdClient)
------------------------------
The remote server returned an error: (400) Bad Request. (System)

При подключении к рабочей области Power BI с помощью SSMS проверьте следующее:

Изменение членства в ролях в SSMS

При использовании SQL Server Management Studio (SSMS) версии 18.8 для изменения членства в ролях в наборе данных в SSMS может отобразиться следующая ошибка:

Failed to save modifications to the server. 
Error returned: ‘Metadata change of current operation cannot be resolved, please check the command or try again later.’ 

Это вызвано известной проблемой в службах приложений REST API. Эта проблема будет устранена в предстоящем выпуске. Для временного обхода этой ошибки в разделе Свойства роли щелкните Скрипт, а затем введите и выполните следующую команду TMSL:

{ 
  "createOrReplace": { 
    "object": { 
      "database": "AdventureWorks", 
      "role": "Role" 
    }, 
    "role": { 
      "name": "Role", 
      "modelPermission": "read", 
      "members": [ 
        { 
          "memberName": "xxxx", 
          "identityProvider": "AzureAD" 
        }, 
        { 
          "memberName": “xxxx” 
          "identityProvider": "AzureAD" 
        } 
      ] 
    } 
  } 
} 

Ошибка публикации — динамический набор данных, подключенный к сети

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

Не удалось опубликовать в Power BI.

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

Псевдоним рабочей области/сервера

В отличие от Azure Analysis Services, псевдонимы серверов не поддерживаются для рабочих областей Premium.

DISCOVER_M_EXPRESSIONS

Представление управления данными DISCOVER_M_EXPRESSIONS в настоящее время не поддерживается в Power BI при использовании конечной точки XMLA. Приложения могут использовать табличную модель объектов для получения выражений M, используемых моделью данных.

Ограничение памяти при использовании команды управления ресурсами в емкостях Premium 2-го поколения

Управление ресурсами в емкостях Premium 2-го поколения гарантирует, что ни одна операция с набором данных не превышает объем доступной памяти для емкости, определяемой номером SKU. Например, для подписки P1 предельный объем допустимой памяти на артефакт составляет 25 ГБ, для подписки P2 этот предел равен 50 ГБ, а для подписки P3 — 100 ГБ. Кроме размера набора данных (базы данных), ограничение объема допустимой памяти также применяется к базовым операциям для набора данных, таким как Создать, Изменить и Обновить.

Предельный объем допустимой памяти для команды основан на минимальном ограничении объема памяти емкости (определяется номером SKU) или значении DbpropMsmdRequestMemoryLimit свойства XMLA.

Например, для емкости P1, если:

  • DbpropMsmdRequestMemoryLimit = 0 (или не указано), предельный объем допустимой памяти для команды составляет 25 ГБ;

  • DbpropMsmdRequestMemoryLimit = 5, предельный объем допустимой памяти для команды составляет 5 ГБ;

  • DbpropMsmdRequestMemoryLimit = 50, предельный объем допустимой памяти для команды составляет 25 ГБ.

Как правило, предельный объем допустимой памяти для команды вычисляется с учетом объема памяти, допустимому для набора данных (25 ГБ, 50 ГБ, 100 ГБ), и объема памяти, уже используемого набором данных к началу выполнения команды. Например, в наборе данных, использующем 12 ГБ для емкости P1, предельный объем допустимой памяти для новой команды составляет 13 ГБ. Однако к предельному объему допустимой памяти может применяться дополнительное ограничение, накладываемое свойством XMLA DbPropMsmdRequestMemoryLimit, которое может быть задано приложением. Вернемся к предыдущему примеру: если для свойства DbPropMsmdRequestMemoryLimit задано 10 ГБ, предельный объем допустимой памяти сокращается еще на 10 ГБ.

Если операция команды пытается использовать больше памяти, чем разрешено ограничением, она может завершиться сбоем и вернуть ошибку. Например, следующая ошибка описывает, что предельный объем допустимой памяти, равный 25 ГБ (емкость P1), превышен из-за того, что набор данных уже использовал 12 ГБ (12 288 МБ) перед началом выполнения команды, и для операции команды было применено ограничение в 13 ГБ (13 312 МБ):

"Управление ресурсами. Эта операция отменена, так как недостаточно памяти для ее завершения. Увеличьте объем памяти емкости Premium, где размещен этот набор данных, или сократите объем памяти, занимаемый вашим набором данных, выполнив такие действия, как ограничение объема импортируемых данных. Дополнительные сведения: используемая память — 13 312 МБ, предельный объем памяти — 13 312 МБ, размер базы данных перед выполнением команды — 12 288 МБ. Чтобы узнать больше, см. https://go.microsoft.com/fwlink/?linkid=2159753".

В некоторых случаях, как показано в следующей ошибке, "потребляемая память" имеет значение 0, но величина "размера базы данных до выполнения команды" уже превышает предельный объем допустимой памяти. Это означает, что не удалось начать выполнение операции, так как объем памяти, уже используемый набором данных, превышает предельный объем памяти для номера SKU.

"Управление ресурсами. Эта операция отменена, так как недостаточно памяти для ее завершения. Увеличьте объем памяти емкости Premium, где размещен этот набор данных, или сократите объем памяти, занимаемый вашим набором данных, выполнив такие действия, как ограничение объема импортируемых данных. Дополнительные сведения: используемая память — 0 МБ, предельный объем памяти — 25 600 МБ, размер базы данных перед выполнением команды — 26 000 МБ. Чтобы узнать больше, см. https://go.microsoft.com/fwlink/?linkid=2159753".

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

  • Перейдите на емкость Premium (номер SKU) более крупного размера.
  • Сократите объем памяти, занимаемый набором данных, ограничив объем данных, загружаемых при каждом обновлении.
  • Если используются операции обновления через конечную точку XMLA, сократите число одновременно обрабатываемых секций. Одновременная обработка слишком большого числа секций с помощью одной команды может привести к превышению допустимого предела памяти.

См. также раздел

Возможность подключения к набору данных с помощью конечной точки XMLA
Автоматизация задач по управлению рабочими областями Premium и наборами данных с помощью субъектов-служб
Устранение неполадок с анализом в Excel
Развертывание решений табличной модели