Мониторинг служб Analysis Services с помощью расширенных событий SQL Server

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Расширенные события (xEvents) — это система отслеживания и мониторинга производительности с легким весом, использующая очень мало системных ресурсов, что делает его идеальным средством для диагностики проблем на рабочих и тестовых серверах. Это также высокомасштабируемая и настраиваемая система, в которой в SQL Server 2016 упрощено использование благодаря поддержке новых встроенных инструментов. В SQL Server Management Studio (SSMS) на подключениях к экземплярам служб Analysis Services можно настроить, запустить и отслеживать динамическую трассировку, аналогичную использованию SQL Server Profiler. Добавление более эффективного средства должно сделать xEvents более разумной заменой SQL Server Profiler и создавать более симметричное представление о том, как диагностировать проблемы в подсистеме СУБД и рабочих нагрузках служб Analysis Services.

Помимо SQL Server Management Studio, можно также настроить сеансы расширенных событий SQL Server Analysis Services с помощью XMLA-скриптов, как это поддерживалось в предыдущих версиях.

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

Настройка служб Analysis Services с помощью SSMS

Для табличных и многомерных экземпляров SSMS отображает папку управления, содержащую сеансы xEvent, инициированные пользователем. Одновременно можно выполнять несколько сеансов. Однако в текущей реализации пользовательский интерфейс расширенных событий служб SQL Server Analysis Services не поддерживает обновление или повторную попытку существующего сеанса.

Папка управления не поддерживается при использовании SSMS для подключения к рабочей области Power BI Premium.

ssas_extended_events_ssms_start

Выбор событий

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

  • CommandBegin и CommandEnd.

  • QueryBegin, QueryEnd и QuerySubcubeVerbose (показывает весь запрос многомерных выражений или DAX, отправленный на сервер), а также ResourceUsage для статистики ресурсов, потребляемых запросом, и сколько строк возвращаются.

  • ProgressReportBegin и ProgressReportEnd (для операций обработки).

  • AuditLogin и AuditLogout (фиксирует удостоверение пользователя, под которым клиентское приложение подключается к службам Analysis Services).

Выбор хранилища данных

Сеанс можно передавать в режим реального времени в окно в Management Studio или сохраняться в файле для последующего анализа с помощью Power Query или Excel.

  • event_file хранит данные сеанса в XEL-файле.

  • event_stream включает параметр "Просмотр динамических данных " в Management Studio.

  • ring_buffer хранит данные сеанса в памяти до тех пор, пока сервер запущен. При перезапуске сервера данные сеанса выброшены

Добавление полей событий

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

Настройка — это параметр в левой части диалогового окна.

Снимок экрана: диалоговое окно с параметром настройки, выделенным справа от поля.

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

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

Обновление сеансов

После создания сеанса обязательно обновите папку Session в Management Studio, чтобы увидеть только что созданный сеанс. Если вы настроили event_stream, щелкните правой кнопкой мыши имя сеанса и выберите "Смотреть динамические данные " для мониторинга активности сервера в режиме реального времени.

Скрипт XMLA для запуска

Расширенная трассировка событий включена с помощью аналогичной команды скрипта создания объекта XMLA, как показано ниже:

<Execute ...>  
   <Command>  
      <Batch ...>  
         <Create ...>  
            <ObjectDefinition>  
               <Trace>  
                  <ID>trace_id</ID>  
                  <Name>trace_name</Name>  
                  <ddl300_300:XEvent>  
                     <event_session ...>  
                        <event package="AS" name="AS_event">  
                           <action package="PACKAGE0" .../>  
                        </event>  
                        <target package="PACKAGE0" name="asynchronous_file_target">  
                           <parameter name="filename" value="data_filename.xel"/>  
                           <parameter name="metadatafile" value="metadata_filename.xem"/>  
                        </target>  
                     </event_session>  
                  </ddl300_300:XEvent>  
               </Trace>  
            </ObjectDefinition>  
         </Create>  
      </Batch>  
   </Command>  
   <Properties></Properties>  
</Execute>  

Где следующие элементы должны быть определены пользователем в зависимости от потребностей трассировки:

trace_id
Определяет уникальный идентификатор для этой трассировки.

trace_name
Имя, заданное этой трассировке; обычно это понятное определение трассировки. Обычно используется значение trace_id в качестве имени.

AS_event
Событие служб Analysis Services, которое будет раскрыто. Дополнительную информацию об именах событий см. в разделе «События трассировки служб Analysis Services».

data_filename
Имя файла, содержащего данные событий. К этому имени добавляется суффикс с меткой времени (timestamp), чтобы избежать перезаписи данных, если трассировка отправляется повторно.

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

Скрипт XMLA для остановки

Чтобы остановить объект трассировки расширенных событий, необходимо удалить его с помощью команды XMLA delete, похожей на приведённую ниже команду скрипта:

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">  
   <Command>  
      <Batch ...>  
         <Delete ...>  
            <Object>  
               <TraceID>trace_id</TraceID>  
            </Object>  
         </Delete>  
      </Batch>  
   </Command>  
   <Properties></Properties>  
</Execute>  
  

Где следующие элементы должны быть определены пользователем в зависимости от потребностей трассировки:

trace_id
Определяет уникальный идентификатор для удаления трассировки.

См. также

Расширенные события SQL Server