2016-06-13 1 views
-1

データベース内のすべてのテーブルに対してロックを持たないビューを作成するためにサーバーで実行できるスクリプトを探しています。ありがとう!T-SQLデータベース内のすべてのテーブルに対してロックのないビューを作成します。

+1

理由を説明できますか? – Mike

+3

[NOLOCKをどこにでもぶつける習慣が悪い](http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - これはどこにでも使用することを推奨しません*** - かなり反対!おかげさまで –

答えて

0

私はこれが悪い考えであることに同意しますが、いくつかの例を示すことによって得られ、学習されるべきことがまだあるかもしれません。しかし、はい、これは潜在的には本当に悪い考えですが、これは意味があります。

1回限りの場合は、このような操作を行うことができます。これは、ビューのDDLを単に(nolock)で作成します。コピー・ペーストして実行するだけです。これを動的に生成する必要がある場合は、もう少し活用する必要があります。

もう1つの注意点 - スキーマバインディングなしのビューではselect *を使用します。基礎となる表構造が変更された場合に自動的に更新されないため、これらのタイプのビューは非常に慎重です。他のセーフガードがない限り、ビューの列を完全に修飾することをお勧めします。

select ' 
    create view ' + name + 'MayBeABadIdea as select * from ' + name + ' (nolock); 
    go' 
from sys.objects 
where type = 'U' 
order by name; 
+0

私はこれが最高のアイデアではないと完全に同意します。私はテーブルをロックせずにリアルタイムで私のCTIデータベースを照会することができる必要があります。残念ながら、ヘルスケアではデータのライブ参照が必要ですが、通話のルーティングと配信の妨げにはなりません。 –

関連する問題