0

我正在尝试在我的分析数据库上创建一个新角色。

我已经测试了多种组合:
当使用 Openrowset => 运行简单的 MDX 查询时,它可以工作。
运行时它可以工作。
尝试使用 openrowset=> ERROR 从 SQl 关系数据库创建新的 SSAS 角色时。

这是我正在尝试的代码

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)".

请帮助 :)
问候,伊利

4

2 回答 2

1

您可以将 ssas olap 添加为链接服务器,然后使用以下代码:

EXEC ('XMLAsomething ....rest of your code') 在 LinkedOlap

于 2009-04-25T23:04:18.307 回答
0

OPENROWSET需要一个有效的查询,例如“ SELECT * FROM table”(在指定数据源的正确 SQL 方言中)

在大多数 SQL 方言中,xml 片段不是有效的查询,尤其是在 T-SQL 中。

不幸的是,在 MDX 中没有像 T-SQL 这样的 CREATE USER 等效项,因此无法通过常规 SQL 语句或 OPENROWSET 来完成。

SSAS Granting User Access中,它提到使用 AMO 来管理使用 OPENROWSET 无法完成的用户。

对不起,这不是答案:我只能说如何不这样做......

于 2009-04-13T09:47:07.323 回答