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

Posted

技术标签:

【中文标题】SSAS 2014 + ADOMD.Net 上的 1 小时超时 - 但没有设置为一小时的超时【英文标题】:1-Hour Timeout on SSAS 2014 + ADOMD.Net - but no Timeouts Set to an Hour 【发布时间】:2018-07-09 22:13:23 【问题描述】:

从 .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 是否有自己单独的超时设置,可能有不同的名称,但我找不到任何相关的文档......

【问题讨论】:

【参考方案1】:

我找到了这个错误的原因:在前端的 VB.Net 代码中,有一行代码将 ADOMD.Net Command 对象的 CommandTimeout 属性设置为 3600 秒。这会覆盖上面提到的连接字符串设置,以及所有服务器级设置。交叉验证检索操作也在 Visual Studio 2017 GUI 中超时这一事实掩盖了该问题。发生这种情况是因为最近才安装了 VS 实例,并且在 Options 菜单/Business Intelligence Designers/Analysis Services Designs/General 下的 Connection and Query Timeouts 尚未设置为 0。

【讨论】:

以上是关于SSAS 2014 + ADOMD.Net 上的 1 小时超时 - 但没有设置为一小时的超时的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 在 SSAS 中测试与数据源的连接

有没有人将 ADOMD.NET 与 WPF DataGrid 一起使用?

ADOMD.net 和 Analysis Services OLE DB Provider 之间的差异(尤其是关于身份验证)

不同 ID 上的 SSAS 聚合

C# Adomd Connection Analysis Service View Cube

刷新数据时的 SSAS (2008R2) 和 Excel 过滤器问题