2009-04-13 5 views
0

Я пытаюсь создать новую роль в моем аналитическом БД.Запуск XMLA-объекта в SQL-запросе?

Я проверил несколько комбинаций:
при запуске простого запроса MDX с Openrowset => он работает.
при работе работает.
при попытке создать новую роль SSAS из реляционной БД SQl с использованием openrowset => ERROR.

вот код, который я пытаюсь

SELECT * FROM OpenRowset('MSOLAP', 'DATA SOURCE=servername; Initial Catalog=AnalysisDBName;', 
' 
<Create xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> 
      <ParentObject> 
       <DatabaseID>AnalysisDBName</DatabaseID> 
      </ParentObject> 
      <ObjectDefinition> 
       <Role xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2"> 
        <ID>Role 22</ID> 
        <Name>Rolename</Name> 
       </Role> 
      </ObjectDefinition> 
    </Create> 

') 

и ошибка, что я получаю это:

OLE DB provider "MSOLAP" for linked server "(null)" returned message "A required child element is missing under Envelope/soap:Body at line , column (namespace 'http://schemas.xmlsoap.org/soap/envelope/'). One of Fault, AuthenticateResponse, DiscoverResponse, ExecuteResponse was expected.". 
Msg 7321, Level 16, State 2, Line 2 
An error occurred while preparing the query " 
<Create xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> 
    <ParentObject> 
     <DatabaseID>AnalysisDBName</DatabaseID> 
    </ParentObject> 
    <ObjectDefinition> 
     <Role xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2"> 
      <ID>Role 22</ID> 
      <Name>Rolename</Name> 
     </Role> 
    </ObjectDefinition> 
</Create> 
" for execution against OLE DB provider "MSOLAP" for linked server "(null)". 

Пожалуйста, помогите :)
С уважением, Elie

ответ

0

OPENROWSET ожидает допустимый запрос, такой как «SELECT * FROM table» (в правильном диалекте SQL источника данных ied)

Фрагмент xml не является допустимым запросом в большинстве диалектов SQL, особенно не T-SQL.

К сожалению, в MDX не существует эквивалента CREATE USER, например T-SQL, поэтому его нельзя выполнить с помощью регулярного оператора SQL или OPENROWSET.

В SSAS Granting User Access в нем упоминается использование AMO для управления пользователями, которые не могут быть выполнены с помощью OPENROWSET.

К сожалению, это не ответ: Я могу только сказать, как не делать этого ...

1

Вы можете добавить SSAS OLAP в качестве связанного сервера, а затем использовать этот код:

EXEC ('XMLAsomething .... остальная часть вашего кода ') AT LinkedOlap