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

1-Hour Timeout on SSAS 2014 + ADOMD.Net - but no Timeouts Set to an Hour

当从 .Net 应用程序 运行ning 一个 ADOMD.Net 命令时,我 运行 遇到了一个令人费解的 XML 超时错误。 Visual Basic 例程迭代驻留在 SQL Server Analysis Services 2014 实例上的挖掘模型列表,并对每个模型执行交叉验证测试。每当交叉验证测试的时间达到 60 分钟标记时,XML for Analysis 解析器就会抛出一个错误,表示请求超时。对于任何不到一小时的例行操作,我可以使用相同的 ADOMD.Net 连接与相同的服务器和应用程序,而不会出现任何故障。这种情况下的罪魁祸首通常是服务器上的 ExternalCommandTimeout 设置,默认为 3600 秒,即一小时。但是,在这种情况下,服务器上的所有以下超时属性都设置为零:CommitTimeout、ExternalCommandTimeout、ExternalConnectionTimeout、ForceCommitTimeout、IdleConnectionTimeout、IdleOrphanSessionTimeout、MaxIdleSessionTimeout 和 ServerTimeout。 只有三个其他超时属性可用,none 其中设置为一小时:MinldleSessionTimeout(当前为 2700)、DatabaseConnectionPoolConnectTimeout(现在为 60 秒)和 DatabaseConnectionPoolTimeout(为 120000)。 MSDN 文档列出了另外三个超时属性,这些属性在 SQL Server Management Studio 2017 中选中的高级属性中不可见: AdminTimeout、DefaultLockTimeoutMS 和 DatabaseConnectionPoolGeneralTimeout。前两个默认为无超时,第三个默认为一分钟。 MSDN 还提到了一些 "forbidden" 超时属性,例如 SocketOptions\LingerTimeout、InitialConnectTimeout、ServerReceiveTimeout、ServerSendTimeout,它们都带有警告,"An advanced property that you should not change, except under the guidance of Microsoft support." 我没有看到通过 SSMS 2017 GUI 设置这些的任何方法.

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

我是不是在某处遗漏了超时设置?有没有人对还有什么可能导致这种深奥的错误有任何想法?提前致谢。我已经尽可能长时间地搁置了这个问题,而且现在真的需要解决它。我想知道 ADOMD.Net 是否有自己单独的超时设置,也许有不同的名称,但我找不到任何相关的文档...

我追查了这个错误的原因:在前端的 VB.Net 代码深处有一行将 ADOMD.Net Command 对象的 CommandTimeout 属性 设置为3600 秒。这会覆盖上面提到的连接字符串设置,以及所有服务器级别的设置。 Visual Studio 2017 GUI 中交叉验证检索操作也会超时这一事实掩盖了这个问题。发生这种情况是因为 VS 实例最近才安装,并且连接和查询超时尚未在选项 menu/Business 智能 Designers/Analysis 服务 Designs/General.

下设置为 0