我正在尝试在我的分析数据库上创建一个新角色。
我测试过多种组合:
使用Openrowset =>运行简单的MDX查询时它有效。
当它运行时它起作用。
尝试使用openrowset =>从SQl关系数据库创建新的SSAS角色时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)".
请帮忙:)
问候,
埃利
答案 0 :(得分:1)
您可以将ssas olap添加为链接服务器,然后使用以下代码:
EXEC('XMLAsomething ......其余代码')AT LinkedOlap
答案 1 :(得分:0)
OPENROWSET需要一个有效的查询,例如“SELECT * FROM table
”(使用指定数据源的正确SQL方言)
xml片段在大多数SQL方言中不是有效查询,尤其不是T-SQL。
不幸的是,在MDX中没有像T-SQL那样的CREATE USER等价物,因此不能通过常规SQL语句或OPENROWSET来完成。
在SSAS Granting User Access中,它提到使用AMO来管理使用OPENROWSET无法完成的用户。
对不起,这不是答案:我只能说不怎么做......