Поделиться через


Обработка ошибок в API TOM (AMO-TOM)

Применимо к: SQL Server 2016 и более поздних версий Analysis Services Azure Analysis Services Fabric/Power BI Premium

Распространенной практикой для управляемых библиотек, таких как табличная объектная модель (TOM) служб Analysis Services Management Objects (AMO), является использование исключений в качестве механизма для сообщения пользователю об ошибках.

При обнаружении ошибки в AMO-TOM, помимо создания нескольких стандартных исключений .NET, таких как ArgumentException и InvalidOperationException, TOM также может выдавать несколько исключений, относящихся к TOM.

Исключения TOM являются производными от класса AmoException, охватывающим исключения AMO и TOM.

Чтобы проиллюстрировать обработку исключений в TOM, давайте рассмотрим одно из наиболее распространенных исключений— класс OperationException.

Исключение OperationException возникает, когда пользователь инициирует операцию на сервере служб Analysis Services, а серверу не удается выполнить операцию либо из-за того, что действие было незаконным, либо из-за другой внутренней или внешней ошибки.

При возникновении объекта OperationException будет содержаться список ошибок XMLA, возвращаемых сервером.

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

Пример кода: обработка исключений

 try 
 { 
  // Change the Model, for example create a table. 
  // … 
   model.saveChanges(); 
 } 
  catch(operationException ex) 
 { 
  foreach(XmlaError err in ex.Results.OfType<XmlaError>().cast<XmlaError>()) 
  { 
   Console.WriteLine("Error returned from the server:" + err.Messsage ); 
  } 
 } 

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

К другим соответствующим исключениям относятся следующие: