私は、数十億行のテーブルがたくさんある巨大なデータベースを使用するアプリケーションに取り組んでいます。私は世界中に分散した開発チームを持っています。さまざまな目的で本番データベースにアクセスする必要があります。DB への読み取り専用アクセス許可が付与されています。クエリを使用すると正常に動作しますwith (nolock)
。ただし、使用していない場合はnolock
、終わりのないクエリを実行してアプリケーション全体をダウンさせることができます。昨年は数回発生したため、新しい開発者に許可を与えることをためらっています。
テーブルごとにビューを作成し、with (nolock)
それらのビューのみにアクセス許可を付与することが 1 つの解決策であることはわかっていますが、どういうわけか、この目的のために 200 個のビューを作成する気がしません。
私は次の方法を探しています:
- すべてのクエリがそのユーザーに対してロックなしで実行される方法で権限を付与する
- ユーザーに使用を強制する
with (nolock)
SQL Server 2008 R2 を使用しています。
PS: このアプリケーションよりも 50 倍大きい別の Oracle ベースのアプリケーションで、これまでこの問題に直面したことはありません。