1

絶えず更新される多くの行を持つ大きなSQLServer2008R2データベースがあります。更新は、ストアドプロシージャを呼び出すバックエンドサービスアプリケーションによって実行されます。これらのストアドプロシージャの1つには、データを再計算および更新するSQLカーソルがあります。これはすべて正常に実行されます。

ただし、フロントエンドWebアプリケーションはこれらの行を検索する必要があり、この検索の結果、

ロック要求のタイムアウト期間を超えました。Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery()で。

調査を行った結果、このクエリを問題なく実行するための最良の方法は、「コミットされていない分離レベルの読み取り」で実行することであることがわかりました。この設定はTelerikOpenAccess設定で行うことができますが、これはデータベースORMプロジェクト全体に影響する設定です。それは私が望むものではありません!このレベルは、このクエリにのみ必要です。

この特定のLINQクエリをこのコミットされていない分離レベルで実行する方法はありますか?または、WITH NOLOCKヒントを使用するためにこの1つのクエリを作成できますか?

4

1 に答える 1

2

使用する

SET LOCK_TIMEOUT -1

クエリの最初に。

リファレンスマニュアルを見る

分離レベルで (および NOLOCK ヒントを使用して) クエリを実行するread uncommittedと、多くの奇妙な問題が発生する可能性があります。なぜこれを行うのか、データフローにどのように干渉するのかを明確に理解する必要があります。

于 2012-02-18T16:35:30.890 に答える