關於SQL Server的WITH(NOLOCK)和(NOLOCK)

FrankYou發表於2015-08-05

The difference is that you should be using the syntax WITH (NOLOCK) (or WITH (<any table hint>)). Why?

    1. Without WITH is deprecated. From Table Hints on MSDN:

      Omitting the WITH keyword is a deprecated feature: This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

    2. from table1 nolock does not apply a hint at all - that's an alias. For example:

      SELECT nolock.name FROM sys.objects nolock ORDER BY nolock.name;
      

      Notice that I can use nolock as an alias. No hint is applied here.

    3. from table1 as mytable nolock is invalid syntax in modern versions of SQL Server.

      Msg 1018, Level 15, State 1, Line 12
      Incorrect syntax near 'nolock'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.

相關文章