私は、常に更新される多くの行を持つ大きなSQL Server 2008 R2データベースを持っています。更新は、ストアドプロシージャを呼び出すバックエンドサービスアプリケーションによって行われます。これらのストアドプロシージャの1つに、データを再計算して更新するSQLカーソルがあります。これはすべて正常に動作します。ロック要求のタイムアウト時間を超えました - Telerik OpenAccess ORM
しかし、私たちのフロントエンドのWebアプリケーションは、これらの行を検索する必要があり、この検索は時々タイムアウト期間を超え
ロック要求時間になります。 Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery()..
でいくつかの研究を行った後、私は問題なく実行するには、このクエリを作るための最善の方法はそれを実行して行うことであることを見出しました"コミットされていない分離レベルを読み込む"。この設定はTelerik OpenAccessの設定で行うことができますが、これはデータベースORMプロジェクト全体に影響する設定です。それは私が望むものではありません!私はこのクエリのためだけにこのレベルをします。
この特定のLINQクエリをこのコミットされていない分離レベルで実行する方法はありますか? または、WITH NOLOCKヒントを使用するこの1つのクエリを作成できますか?
これらのロックエラーを防止するために更新バックエンドアプリケーションをヒントする方法がある場合は、それも面白いでしょう。最も重要なことは、フロントエンドが高速検索を実行できることです。速度もデータの一貫性よりも重要です。 – Tys
クエリを直接編集できる場合は、次のステートメントを使用して現在のセッションの隔離を設定することができます: 'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED' –
カーソルベースのソリューションをセットベースのソリューションに置き換えると、あなたのロックの問題とおそらくより良い実行します。 –