データベースのローカルバージョンを実行するために、SQL Server 2008 SP2をワークステーションにセットアップしました。本番データベースはSQL Server 2008 R2です。同僚がワークステーションでSQL Server 2005を実行しています。SQL Server 2008 SP2のCTEに関するNOLOCKのエラー
My DBは次のコードでエラーを投げますが、他のサーバーの同じDBの他のインスタンスはエラーなしでこのクエリを実行します。
WITH Posts AS (
SELECT TOP 10 *
FROM TBL_MSG_LATEST (NOLOCK)
WHERE TBL_MSG_LATEST.STATUS = 1
)
SELECT * FROM Posts (NOLOCK)
...このエラーがスローされます。
(NOLOCK)
を削除
Msg 215, Level 16, State 1, Line 6 Parameters supplied for object 'Posts' which is not a function. If the parameters are intended as a table hint, a WITH keyword is required.
私のDBを幸せにPosts
後。
私はCTEを完全に理解していませんが、このNOLOCK
はここでも必要ではないかもしれません。
しかし私は、私の開発環境を満たすためにコードベースを変更することに満足していません。
新しいDB環境との設定に違いはありますか?エラーメッセージから解読できないNOLOCK
を削除する正当な理由はありますか?このページから
NOLOCKはおそらくレポートなどのインスタンスでのみ使用するべきです...そうでないと、コミットされていないデータを読み取る可能性があります。 –