首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSAS 2014 + ADOMD.Net上的1小时超时-但没有将超时设置为1小时

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

Stack Overflow用户
提问于 2018-07-09 22:13:23
回答 1查看 566关注 0票数 0

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 23:36:56

我跟踪了这个错误的原因:在前端的VB.Net代码中隐藏了一行,将ADOMD.Net命令对象的CommandTimeout属性设置为3600秒。这覆盖了上面提到的连接字符串设置以及所有服务器级别的设置。跨验证检索操作也在VisualStudio2017 GUI中超时的事实掩盖了这个问题。这是因为VS实例是最近才安装的,而且在Options菜单///General下,连接和查询超时还没有设置为0。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51254738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档