2017-07-06 8 views
1

に取り組んでいますが、基本的には次のようになります。が入手単純なクエリの「待機操作がタイムアウトになりました」、他のクエリが動作し、私は、オブジェクトを取得するためにビューを呼び出して、非常に単純なLINQクエリを持っているローカルDB

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でクエリを実行すると、1秒未満で実行されます。

トラブルシューティングにはどのような良いステップがあり、何かアドバイスをいただければわかりません。

私はまずEntity Framework 6データベースを使用しています。

+0

SSMSでクエリの実行計画を確認できます。[この素晴らしい投稿](https://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-plan)を参照してください。 – Diana

+0

VS出力ウィンドウからsql query/connectionstringをトレースするcontext.Database.Log = log => Trace.Write(log); –

+0

ありがとうございました! –

答えて

1

ダイアナとウィリアムからの素晴らしい提案です。残念ながら、私はホストされたデータベースでクエリプランを表示する権限を持っていませんでした。

ホストされているデータベースのビューから返された結果を単純化した後、問題の根本原因となったビューをクエリするのが実際に遅かったと判断しました。クエリ自体は単純ですが、ビューはかなり複雑です。インデックス付きのビューを作成するためにデータベースに必要なアクセス許可を取得できるかどうかを確認します。

関連する問題