2017-07-06 51 views
1

我有一个非常简单的LINQ查询,我打电话是为了得到一个对象,基本上是这样的:获得简单查询“等待操作超时”,其他查询工作,工作在本地数据库

context.view.FirstOrDefault(p => p.id == key) 

键和id是字符串,这并不理想,我认为。但是,当我对我的本地数据库运行它时,它工作正常。

然而,当我部署我的应用程序,我得到的消息:

[Win32Exception (0x80004005): The wait operation timed out] 
[SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to 
completion of the operation or the server is not responding.] 

反对意见的其他查询,迅速开展工作,并符合预期。他们返回列表而不是单个对象,我不确定这是否有所作为。

由于配置环境的方式,我无法从我的开发环境连接到我的托管数据库,因此我的故障排除选项有所限制。我仔细检查过本地和托管环境中的视图是否相同。

当我在SSMS中针对托管数据库运行查询时,它在一秒钟内执行。

我不确定接下来的步骤会有什么好的故障排除方法,并希望得到任何建议。

我首先使用实体​​框架6,数据库。

+0

您可以检查SSMS中的查询执行计划:请参阅[这篇伟大的文章](https://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-plan)。 – Diana

+0

从VS输出窗口跟踪sql查询/连接字符串context.Database.Log = log => Trace.Write(log); –

+0

谢谢你们两位! –

回答

1

这些都是戴安娜和威廉的伟大建议。不幸的是,我没有权限查看托管数据库中的查询计划。

在简化托管数据库视图返回的结果之后,我确定查询作为问题根源的视图实际上速度很慢。虽然查询本身很简单,但视图非常复杂。我将会看看我是否可以获得数据库的必要权限来创建索引视图。