none
OLAP: Ошибка при Update измерения RRS feed

  • Общие обсуждения

  • Доброго времени суток.
    Я пишу процедуру для создания куба используя AMO в SQL CLR. При попытке создать dimension у меня вываливается ошибка.

    Msg 6522, Level 16, State 1, Procedure CreateCube, Line 0
    A .NET Framework error occurred during execution of user-defined routine or aggregate "CreateCube": 
    TSqlOlap.OlapException: Создаем измерения в базе. ---> Microsoft.AnalysisServices.OperationException: Элемент "DataItem" в строке 34, столбце 30 (пространство имен "http://schemas.microsoft.com/analysisservices/2003/engine") не может находиться под Envelope/Body/Execute/Command/Alter/ObjectDefinition/Dimension/Attributes/Attribute/KeyColumns.
    
    Microsoft.AnalysisServices.OperationException: 
      в Microsoft.AnalysisServices.AnalysisServicesClient.SendExecuteAndReadResponse(ImpactDetailCollection impacts, Boolean expectEmptyResults, Boolean throwIfError)
      в Microsoft.AnalysisServices.AnalysisServicesClient.Alter(IMajorObject obj, ObjectExpansion expansion, ImpactDetailCollection impact, Boolean allowCreate, XmlaWarningCollection warnings)
      в Microsoft.AnalysisServices.Server.Update(IMajorObject obj, UpdateOptions options, UpdateMode mode, XmlaWarningCollection warnings, ImpactDetailCollection impactResult)
      в Microsoft.AnalysisServices.Server.SendUpdate(IMajorObject obj, UpdateOptions options, UpdateMode mode, XmlaWarningCollection warnings, ImpactDetailCollection impactResult)
      в Microsoft.AnalysisServices.MajorObject.Update(UpdateOptions options, UpdateMode mode, XmlaWarningCollection warnings)
      в Microsoft.AnalysisServices.MajorObject.Update()
      в TSqlOlap.OlapHelper.CreateDimensions(Database db, DataSourceView dataSrcView, Dictionary`2 rawDimension, Dictionary`2 mapRegister)
      в TSqlOlap.OlapProcedures.CreateCube(Int32 id)
    TSqlOlap.OlapException: 
      в TSqlOlap.OlapProcedures.CreateCube(Int32 id)
    
    

    Что интересно этот же код работает, если его запускать не sql clr(.
    Привожу тело метода которым создаю измерение

    		/// <summary>
    		/// Создает новое измерение.
    		/// </summary>
    		/// <param name="db">База данных.</param>
    		/// <param name="dimName">Имя измерения.</param>
    		/// <param name="dataSrcViewId">Id вида источника данных.</param>
    		/// <returns>Созданное или найденное измерение с именем dimName.</returns>
    		public static Dimension CreateDimension(Database db, string dimName, string dataSrcViewId)
    		{
    			Dimension dim = db.Dimensions.FindByName(dimName);
    			if (dim == null)
    			{
    				dim = db.Dimensions.Add(dimName, db.Dimensions.GetNewID(dimName));
    				dim.Type = DimensionType.Regular;
    				dim.UnknownMember = UnknownMemberBehavior.Visible;								
    				dim.Source = new DataSourceViewBinding(dataSrcViewId);
    				dim.StorageMode = DimensionStorageMode.Molap;
    				dim.ProcessingGroup = ProcessingGroup.ByAttribute;
    				dim.ProcessingMode = ProcessingMode.Regular;
    			}
    			return dim;
    		}	
    
    Ошибка возникает после того как я к нему создам измерений и попытаюсь выполнить
    Update();

    С нетерпением жду комментариев почему происходит ошибка? И как эту проблему обойти?

    27 ноября 2010 г. 14:09

Все ответы

  •  Уважаемый пользователь!


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


    Для связи [mail]
    3 декабря 2010 г. 8:17