Estaba bastante seguro de que necesita especificar el NOLOCK
para cada uno JOIN
en la consulta. Pero mi experiencia se limitó a SQL Server 2005.
Cuando busqué MSDN solo para confirmar, no pude encontrar nada definitivo. Las siguientes declaraciones parecen hacerme pensar que para 2008, sus dos declaraciones anteriores son equivalentes, aunque para 2005 no es el caso:
[SQL Server 2008 R2]
Todas las sugerencias de bloqueo se propagan a todas las tablas y vistas a las que accede el plan de consulta , incluidas las tablas y vistas a las que se hace referencia en una vista. Además, SQL Server realiza las comprobaciones de consistencia de bloqueo correspondientes.
[SQL Server 2005]
En SQL Server 2005, todas las sugerencias de bloqueo se propagan a todas las tablas y vistas a las que se hace referencia en una vista. Además, SQL Server realiza las comprobaciones de consistencia de bloqueo correspondientes.
Además, tenga en cuenta que esto se aplica tanto a 2005 como a 2008:
Las sugerencias de la tabla se ignoran si el plan de consulta no accede a la tabla. Esto puede ser causado por el optimizador que elige no acceder a la tabla, o porque se accede a una vista indexada. En el último caso, se puede evitar el acceso a una vista indizada mediante el uso de la OPTION (EXPAND VIEWS)
sugerencia de consulta.