在 XMLA 中传递参数
Posted
技术标签:
【中文标题】在 XMLA 中传递参数【英文标题】:Passing a parameter in XMLA 【发布时间】:2015-11-20 08:41:27 【问题描述】:我有以下 XMLA 脚本来将域用户添加到特定的 SSAS 成员角色。它工作正常,但我需要循环工作。包含所有用户的表将从Active Directory
填充。问题是如何为我的 SQL Table
或 SSAS Dimension
中存在的每个用户生成选项卡 <Member> </Member>
?或者如何将表中的每个用户名解析为 XMLA-Tab
中的参数?
【问题讨论】:
【参考方案1】:我创建了一个 T-SQL 脚本 here,它确定当前用户并通过链接服务器将一个添加到 SSAS。加入您的表格并将其用作成员的来源应该不难。如果您不关心该角色当前拥有哪些成员,则可能不需要 ASSP。
以下是设置链接服务器的步骤: http://www.mssqltips.com/sqlservertip/2790/dynamic-xmla-using-tsql-for-sql-server-analysis-services/
如果您不想设置链接服务器并安装 ASSP 来执行上述操作,您可以编写一些使用 AMO 库来维护成员的 C# 代码。
【讨论】:
我创建了一个名为 SSAS 的链接服务器和一个用于 xaml 脚本的存储过程来解析用户名。我尝试使用带有 @members 的脚本将下一个成员附加到旧成员,但是当我执行EXECUTE('CALL ASSP.DiscoverXmlMetadata("\MISystem\Roles\PowerUsers\Members\Member")') at [SSAS]
(其中 MISystem 是 SSAS-DB 而 PowerUsers 是角色名称)时,我收到以下消息 Cannot process对象“流”。链接服务器“(null)”的 OLE DB 提供程序“STREAM”表示该对象没有列。我已经安装了 ASSP。
我检查了问题可能出在哪里,在我看来是权限问题。我的用户已经是管理员。创建 SSAS 链接服务器以接受 RPC,并且 MSOLAP 提供程序已启用 Allow inprocess 选项
我终于为所有用户生成了一个 xaml 脚本,并在您的存储过程中解析了变量。它工作正常。顺便说一句,不错的博客@GregGalloway以上是关于在 XMLA 中传递参数的主要内容,如果未能解决你的问题,请参考以下文章