Устранение неполадок Service Manager кубами OLAP

Важно!

Поддержка этой версии Service Manager завершена. Рекомендуем выполнить обновление до Service Manager 2022.

В следующих разделах описаны распространенные проблемы, которые могут потребоваться для устранения неполадок с кубами данных OLAP в Service Manager хранилище данных.

Сбои обработки

Хотя в базе данных DWRepository существуют меры безопасности для обеспечения целостности данных, они не могут полностью предотвратить возможность ошибки обработки. Наиболее распространенной ошибкой обработки является исключение DimensionKeyNotFound. Так как измерения SQL Server analysis Server (SSAS) по умолчанию обрабатываются каждые 60 минут, возможно, что при обработке группы мер фактов ключи измерений еще не существуют. В таком случае по умолчанию схема обработки заново обрабатывает измерения SSAS, используя задачу ProcessUpdate, после чего заново обрабатывает факт до двух раз, чтобы устранить ошибки ключей.

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

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

  • В сценариях с несколькими киосками данных измерения каждого киоска указывают на основной киоск данных хранилища данных. Это делается для того, чтобы уменьшить размер и время обработки кубов OLAP. Однако для фактов в Operations Manager или Configuration Manager киосках данных можно выбрать ключи измерения, которые еще не существуют в основном киоске данных хранилища данных. В таком случае следует запустить задание загрузки основного киоска данных для устранения сбоя обработки кубов, указывающих на киоски данных Configuration Manager или Operations Manager.

Устранение неполадок при настройке многомерных выражений

Так как для многих настроек куба требуется знание многомерных выражений, в исходном многомерном выражении, используемом для настройки куба OLAP, часто возникают синтаксические ошибки. Может потребоваться несколько попыток, прежде чем выражение будет удовлетворять вашим потребностям. Прежде чем добавлять выражение MDX в куб OLAP при помощи элемента CubeExtension или определять его в элементе SystemCenterCube, следует проверить действие выражения MDX на куб OLAP, используя среду Business Intelligence Development Studio или SSAS без сохранения изменений.

Однако если содержащее ошибки выражение MDX уже было добавлено в пакет управления при помощи элемента CubeExtension, можно удалить расширение куба, чтобы отменить все изменения, внесенные в куб OLAP. Если выражения определяются с помощью элемента SystemCenterCube, необходимо удалить пакет управления, а затем вручную удалить куб OLAP из служб SSAS, прежде чем вносить какие-либо исправления и повторно развертывать пакет управления кубами OLAP. Учитывая этот нюанс, настройки куба следует определять при помощи элемента CubeExtension.

Сбои при развертывании пакета управления OLAP Cube

Представим ситуацию, требующую просмотра группы мер WorkItems Assigned To User с последующим созданием среза из всех пользователей определенного отдела. При попытке выполнить фильтрацию UserDimничего не происходит или не возвращается никаких данных. Это может запутать, так как UserDim имеет связь с группой мер.

В такой ситуации вспомните, что одно и то же измерение базы данных может иметь несколько ролей в многомерной модели. Такие измерения называются "ролевыми измерениями". Например, измерение времени может быть использовано несколько раз в кубе OLAP, описывающем сведения о полетах. Ролевые измерения в данном случае могут выступать под названиями Departure Time и Arrival Time, при этом оба они ссылаются на измерение Time .

В примере о WorkItems Assigned To User , измерение пользователей фактически использует назначенное ролевое имя AssignedToUser. Если пользователь отфильтрован по этому конкретному измерению, а не userDim, он вернет правильные сведения.

В среде BIDS предусмотрена полезная функция (вкладка "Использование измерений"), показывающая отношения между измерениями и кубами OLAP и позволяющая определить, какие измерения можно использовать для получения плоскостных и объемных срезов куба OLAP. Более того, в примере WorkItems Assigned To User у измерения UserDim нет отношения с группой мер WorkItemAssignedToUser , в то время как у UserDim(AssignedToUser) есть отношение к группе мер, где атрибутом соединения является UserDimKey. В данном случае на вкладке "Использование измерений" ролевое имя выделено скобками.

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

Сбой обработки кубов OLAP на удаленном сервере SSAS

В некоторых ситуациях обработка куба OLAP на удаленном сервере SSAS может завершиться сбоем из-за неправильной настройки брандмауэра. Стандартный экземпляр SSAS использует TCP/IP-порт 2383 и для возможности доступа данный порт должен быть открыт в брандмауэре. Чтобы разблокировать порт, выполните следующие инструкции командной строки:

C:\Windows\system32>set port=2383   
C:\Windows\system32>netsh advfirewall firewall add rule name="Analysis Services" protocol=TCP dir=in localport=2383 action=allow  

Обработка куба OLAP останавливается

Обработка куба OLAP может быть остановлена из-за множества причин. Сначала необходимо убедиться, что на сервере достаточно ОЗУ, особенно в ситуациях, когда хранилище данных и сервер SSAS размещаются на одном сервере, чтобы иметь достаточно памяти для параллельного выполнения заданий извлечения, преобразования и загрузки (ETL) хранилища данных и обработки куба. Ряд возможных решений приведен ниже.

  1. В службах Microsoft SQL Server 2008 Analysis Services существуют известные проблемы взаимоблокировки. Избежать их позволяет увеличение количества потоков в пуле вычислительных потоков до прекращения вычислений. Если система уже остановлена, обходным решением является перезапуск службы System Center Management и службы Analysis Services, а затем сброс рабочего элемента обработки куба до состояния 3, что означает, что он не запущен, чтобы обработчик рабочих процессов Service Manager смог перезапустить его.

    Примечание

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

    select processId from infra.process where processname like 'Process.{CubeName}'  
    select batchid from infra.batch where processId = {ProcessId from previous query}  
    select * from infra.workitem(nolock) where BatchId = {BatchId from previous query}  
    update infra.workitem set statusid = 3 where workitemId = {workitemId from previous query)  
    
    
  2. Проверьте свойство CoordinatorExecutionMode в службе SSAS и убедитесь, что оно задано правильно. Подробнее об этой проблеме можно прочитать на форумах SQL Server.

Задача DWMaintenance останавливается на шаге ManageCubePartitions или ManageCubeTranslations.

Наиболее распространенной причиной данной ситуации является отсутствие ответа от SSAS-сервера. Обходное решение аналогично первому шагу в предыдущем разделе "OLAP Cube Processing Stops" (Остановка обработки куба OLAP). Чтобы определить соответствующий рабочий элемент обработки куба, можно выполнить следующие запросы к базе данных DWStagingAndConfig. Обратите внимание — несмотря на то, что запросы приведены по отдельности, их с легкостью можно объединить в один:

select processid from infra.process where processname = 'DWMaintenance'  
select * from infra.ProcessModule where ProcessId = {ProcessId from previous query} (Note the ProcessModuleId where the VertexName is ManageCubePartitions/ManageCubeTranslaions)  
Select * from infra.batch where ProcessId = {ProcessId from previous query} (Note the BatchId from the largest batch)  
select * from infra.WorkItem where BatchId = {BatchId from previous query}  
update infra.workitem set statusid = 3 where workitemId = {workitemId for the step that is not responding with the corresponding processmoduleid for ManageCubePartitions/ManageCubeTranslations)  

Дальнейшие действия