2017-08-26 51 views
0

nolockでビューを変更することはできますか?もしそうなら、私はそれをどうしたらいいですか?SQL Serverでnolockでビューを変更することはできますか?

ALTER VIEW dbo.xx_view 
AS 
    SELECT * 
    FROM dbo.yy 

私の現在の問題は、私は他の人を待つ必要があるということですその後、ビューを変更することができ、dbo.xx_viewを使用して終了します。他の人がクエリをクエリしているときでも、ビューを強制的に変更できる方法はありますか。

+3

NOLOCKは、ビュー定義を「ロック」することとは関係ありません。それは、SQL世界で広く普及している永続的な悪い習慣の1つである「クエリヒント」です。ここにあなたをスピードアップするための記事がいくつかあります... https://blogs.sentryone.com/aaronbertrand/bad-habits-nolock-everywhere/ ... https://sqlstudies.com/2015/03/18/why-not-nolock/ –

+0

HINTSが実際にオプティマイザをオプションから無効にしているとも言えます。マイクロソフトでは、専門的なDBAによる最後の手段として使用されていることを苦労して文書ページ全体で強調しています。 [HINTS - Microsoft Docs](https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql) –

+0

また、これがマテリアライズド・ビューでない限り、VIEWSは難しい - コーディングされた**クエリ**。クエリの実行中に使用されているSQLプランを無効にする必要があるため、ユーザーが終了するまでこれらのパラメータを変更することはできません。 –

答えて

1

あなただけの他のselect文のようにそれを指定することができます。後者の場合

SELECT * FROM dbo.xx_view WITH (NOLOCK) 

hereを示唆するようにビューを照会しているときにNOLOCKヒントを提供することができ、

ALTER VIEW dbo.xx_view AS 
SELECT * FROM dbo.yy WITH (NOLOCK) 

しますか、ビュー内の照会でNOLOCKヒントを提供する必要はありません。

+0

こんにちはNisarg、あなたの返信ありがとう!誰かがdbo.xx_viewを使っていても、私はdbo.xx_viewビューを変更できるかどうか考えています。現在の問題は、dbo.xx_viewを使用して終了するまで待たなければならないということです。その後、ビューを変更することができます。 '' 'ALTER VIEW dbo.xx_view WITH(NOLOCK)AS SELECT * FROM dbo.yy'''がうまくいかないと考えています... –

+0

私はこのような問題に遭遇したことはありません。あなたがそれを変更しようとすると、何かエラーが出ますか? – Nisarg

+0

いいえ、エラーはありません。このプロセスは、別のプロセスが完了するまで待つだけです。 –

関連する問題