2

ロックとデッドロックを防ぐためWITH(NOLOCK)に、ビュー内でテーブル ヒントを使用することにしました。

それは良い効果をもたらし、ユーザーはそれに満足していました.

これらのビューがアプリケーション (PIVOTAL と呼ばれる CRM アプリケーション) 内から呼び出されたときに問題が発生しました。

このアプリケーションがビュー (WITH(NOLOCK)内部にあるビュー) をクエリすると、別の table lock が追加されますREADCOMMITTED

例えば:

select * from MY_view WITH(READCOMMITTED) 

この結果、競合するロックについて知らせる SQL Server エラー メッセージが表示されます。

現在、アプリケーションとそのスクリプトの生成方法を変更することはできません。

以外のヒントを SQL Server に無視させる方法はありますMy_viewか? NOLOCKを優勢にしてREADCOMMITTED、それを維持できるようにする方法はありますMy_Viewか?

ありがとうございます。マルチェロ

4

1 に答える 1

0

ここに簡単な解決策はないと思います。SQL Server は、基になるテーブルに適用するロックがわからないため、競合するロックを取得できません。

で読み取るアプリケーション用に別のビューのセットを作成できますREADCOMMITTEDか?

于 2013-10-02T10:27:08.900 に答える