问题标签 [adomd.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
672 浏览

c# - AdomdConnectionException 未处理 - 连接字符串无效

我正在使用上面的代码连接到服务器,然后我正在使用它进一步运行 MDX 查询。问题是我得到的错误 - “连接字符串无效”在行

我在连接字符串中使用的设置名称是否不正确?有人可以帮我弄清楚我的连接字符串有什么问题吗?

堆栈跟踪如下: 在此处输入图像描述

0 投票
1 回答
391 浏览

c# - ADOMD.Net 中的 AdomdConnection 类中缺少 ChangeEffectiveUser API(用于 SSAS 中的用户模拟)

我一直在尝试使用模拟检查用户在 SQL Server Analysis Services (SSAS) 服务器上的访问权限。

AdomdConnection 类具有以下实例方法来完成相同的操作:

是相同的 MSDN 文档。

我按照这里的 NuGet 包说明在我的 C# 项目中添加了 ADOMD.Net,但是当我尝试使用 API 时,我根本看不到智能感知中的 API。

它给出了编译失败:

错误 CS1061“AdomdConnection”不包含“ChangeEffectiveUser”的定义,并且找不到接受“AdomdConnection”类型的第一个参数的扩展方法“ChangeEffectiveUser”(您是否缺少 using 指令或程序集引用?)

我错过了什么吗?

0 投票
2 回答
2852 浏览

azure - 使用服务主体的 Azure 分析服务连接不起作用

我正在尝试使用 ADOMD 连接到 Azure 分析服务并使用服务主体进行身份验证。所以我做了以下工作:

  1. 在 AAD 中创建应用程序。
  2. 授予应用(服务主体)对 Azure 分析服务的读取权限。

下面是我连接到 Azure 分析服务的代码。

我能够获得有效的访问令牌,但在尝试打开连接时出现以下错误:

AdomdErrorResponseException:用户“app:xxxxxxx@xxxxxx”无权访问“adventureworks”数据库,或者该数据库不存在。

附加信息::

  1. 我已经验证通过 Azure 门户向服务主体授予 Azure 分析服务的权限(读者和也尝试过贡献)。
  2. 我用服务帐户(用户名和密码)尝试了相同的代码,它可以工作。
  3. 如果我从连接字符串中删除“Initial Catalog= Adventureworks”,那么我的连接将成功。但我不明白为什么分析服务权限没有传播到模型。

解析度:

愚蠢的是,我在发布此内容后就自己获得了解决方案。上面的第 3 点给了我一个线索。通过门户授予对 Azure 分析服务的权限不会传播到服务主体(Azuire AD 应用程序)的模型。

脚步:

  1. 在 Sql server Mgmt Studio 中打开 Azure 分析服务。
  2. 在目标模型中,转到Roles
  3. 将服务主体添加到具有权限的所需角色中。服务主体以以下格式添加:

    应用程序:[appid]@[tenantid]

示例:应用程序:8249E22B-CFF9-440C-AF27-60064A5743CE@86F119BE-D703-49E2-8B5F-72392615BB97

0 投票
0 回答
272 浏览

c# - 错误引用的程序集

尝试构建我的解决方案时出现以下错误。我很确定我以前在这台机器上做过,但已经好几个月了。我不确定在此期间可能发生了什么变化。

我试图通过 SSDT(卸载)安装程序和手动删除文件和注册表项以及 gacutil 从我的计算机中删除所有提及 8.0.700.0。该项目配置为使用 10.0,但我无法弄清楚它是如何知道首先存在 8.0.700.0 版本的。

据我所知,注册表、GAC 或版本 8.0.700.0 的程序集文件夹中没有任何内容。
知道这里发生了什么吗?

目前在 GAC

0 投票
1 回答
886 浏览

sql-server - SSIS 脚本组件作为源 Null 值

我在 SSIS 中有一个包,它使用 essbase 多维数据集中的 adomd.Net 加载数据。使用 2 列包可以正常工作,但是当我添加 3. 列包时失败。

错误信息说:

你调用的对象是空的。

第一行的第三列包含null和其他行中的一些值。

问题在 3. 列中的值中查找。我尝试了这个 if 语句,但我得到的是空列而不是值。

0 投票
2 回答
310 浏览

c# - ADOMD.net - 读取 SSAS 表格多维数据集上的维度和度量信息

我是 SSAS 世界的新手。我想使用 ADOMD.net 库从多维数据集读取信息。我需要获取所有维度并获取与每个维度相交的度量列表。获取此信息的最佳方法是什么。

0 投票
1 回答
510 浏览

ado.net - SSAS 2014 + ADOMD.Net 上的 1 小时超时 - 但没有设置为一小时的超时

从 .Net 应用程序运行 ADOMD.Net 命令时,我遇到了一个神秘的 XMLA 超时错误。Visual Basic 例程遍历驻留在 SQL Server Analysis Services 2014 实例上的挖掘模型列表,并对每个模型执行交叉验证测试。每当交叉验证测试经过的时间达到 60 分钟标记时,XML for Analysis 解析器就会抛出一个错误,指出请求超时。对于花费不到一小时的任何日常操作,我可以使用相同的 ADOMD.Net 连接与相同的服务器和应用程序,而不会出现任何故障。这种情况的罪魁祸首往往是服务器上的 ExternalCommandTimeout 设置,默认为 3600 秒,即一小时。但是,在这种情况下,服务器上的所有以下超时属性都设置为零:CommitTimeout、ExternalCommandTimeout、ExternalConnectionTimeout、ForceCommitTimeout、IdleConnectionTimeout、IdleOrphanSessionTimeout、MaxIdleSessionTimeout 和 ServerTimeout。只有三个可用的超时属性,没有一个设置为一小时:MinldleSessionTimeout(当前为 2700)、DatabaseConnectionPoolConnectTimeout(现在为 60 秒)和 DatabaseConnectionPoolTimeout(为 120000)。MSDN 文档列出了另外三个在 SQL Server Management Studio 2017 中选中的高级属性不可见的超时属性:AdminTimeout、DefaultLockTimeoutMS 和 DatabaseConnectionPoolGeneralTimeout。前两个默认为无超时,第三个默认为一分钟。MSDN 还提到了一些“禁止”超时属性,例如 SocketOptions\ LingerTimeout、InitialConnectTimeout、ServerReceiveTimeout、ServerSendTimeout、其中都带有警告,“您不应该更改的高级属性,除非在 Microsoft 支持的指导下。” 不过,我看不到任何通过 SSMS 2017 GUI 设置这些的方法。

由于我真的用完了超时设置来尝试,我很难过如何纠正这种行为并允许我的 .Net 应用程序通过 ADOMD 等待这些交叉验证。很久以前,我能够通过将某些属性设置附加到连接字符串来解决一些神秘的 SSAS 超时问题,例如“Connect Timeout=0;CommitTimeout=0;Timeout=0”等等。然而,尝试以这种方式通过连接字符串分配 ExternalCommandTimeout 值会导致 XMLA 错误“无法识别 ExternalCommandTimeout 属性”。我没有以这种方式测试每一个 SSAS 服务器超时,但是这个异常表明 ADOMD.Net 连接字符串只能接受超时属性的一个子集。

我在某处错过了超时设置吗?有没有人知道还有什么可能导致这种深奥的错误?提前致谢。我已经尽可能长时间地把这个问题放在次要位置,并且现在真的需要修复它。我想知道 ADOMD.Net 是否有自己单独的超时设置,可能有不同的名称,但我找不到任何相关的文档......

0 投票
0 回答
335 浏览

c# - ADOMD 数据读取器加载时速度很慢

真的希望有人可以帮助我。

在我们的应用程序中,我有一个具有以下特征的 MDX 查询:

  • 5个维度和2个措施
  • 返回 160k 行
  • 用 MDX 编写
  • 执行时间为 34 秒。

尽管需要一段时间并返回大量行,但这是完全可以接受的,客户向我保证他们将使用所有数据。

当我试图访问我的应用程序中的数据时,问题就出现了。

  • 使用 ADOMDConnection 连接到 OLAP 数据库效果很好
  • 使用 ADOMDDatareader 创建数据读取器效果很好
  • 通过 datareader 加载数据需要 5 分钟以上

即使我不将数据传输到数据集/数据表中,而是通过“dataReader.Read()”命令(通过 while 循环)简单地增加计数器,也需要 5 分钟以上。我尝试通过 ADOMDDataAdapter(6 分钟)和 Cellset(6 分钟 +)检索数据。

我的应用程序具有以下属性:

  • 控制台应用程序(用于测试目的)
  • 使用 VB.Net,也将在 C# 中进行测试
  • 视觉工作室 2015
  • SQL Server 2014
  • Microsoft.AnalysisServices.AdomdClient v9.0.5

任何人都可以帮助我加快速度,或者只是指出我可以看到的方向吗?使用更新版本的 AdomdClient 会有所帮助吗?我可以完全使用的另一种技术?立方体中有什么我可以改进的吗?

谢谢!

0 投票
1 回答
243 浏览

powershell - 通过 Powershell 破坏格式字符串进行 SSAS 部署

通过 PowerShell 部署多维数据集时遇到问题,我不知道如何解决。在我的解决方案中,我对 FormatString: 采取了一些措施\£ #,##0;-\£ #,##0。如果我通过 Visual Studio 正常部署它们,那么我在部署后从 SSAS 服务器中提取的 XMLA 将具有<FormatString>\£ #,##0;-\£ #,##0</FormatString>良好的预期效果。但是,如果我通过 PowerShell 部署,则从服务器生成的 XMLA 是<FormatString>\£ #,##0;-\£ #,##0</FormatString>.

我意识到问题在于£被解析,但我不确定如何解决它。

这里的背景是我正在使用 Octopus Deploy,并且我在下面出现问题的地方提取了 PowerShell:

我做了一些调查,发现以下内容:

  • PowerShell 生成的 xmla 文件(不在代码段中)具有正确的格式字符串\£ #,##0;-\£ #,##0
  • .asdatabase 文件也有正确的格式字符串

我怀疑在以下位置发生了一些事情:

或进一步向下:

任何帮助,将不胜感激。

PS:我在解决方案中设置格式字符串时尝试过使用它,但无法找到解决方案。请注意,我不能简单地使用“货币” b/c 服务器设置为英语(美国)。

0 投票
1 回答
230 浏览

c# - ADOMD.Net 查询结果不正确

我正在尝试使用 MSSQL 分析服务器。我正在尝试执行 DMX 查询,但是阅读器结果与 SQL Server Management Studios 不对应,因为阅读器会抛出索引越界错误。

我已经使用 NuGet 导入了“Microsoft.AnalysisServices.AdomdClient.retail.amd64”V15.3.1,并且我正在使用 SQL Server 2017 这是测试应用程序代码

这是数据库查询的结果