Eu tinha certeza de que você precisa especificar o NOLOCK
para cada um JOIN
na consulta. Mas minha experiência foi limitada ao SQL Server 2005.
Quando procurei o MSDN apenas para confirmar, não consegui encontrar nada definitivo. As declarações abaixo parecem me fazer pensar que, para 2008, suas duas declarações acima são equivalentes, embora em 2005 não seja o caso:
[SQL Server 2008 R2]
Todas as dicas de bloqueio são propagadas para todas as tabelas e visualizações acessadas pelo plano de consulta , incluindo tabelas e visualizações mencionadas em uma visualização. Além disso, o SQL Server executa as verificações de consistência de bloqueio correspondentes.
[SQL Server 2005]
No SQL Server 2005, todas as dicas de bloqueio são propagadas para todas as tabelas e modos de exibição mencionados em um modo de exibição. Além disso, o SQL Server executa as verificações de consistência de bloqueio correspondentes.
Além disso, aponte para observação - e isso se aplica a 2005 e 2008:
As dicas da tabela serão ignoradas se a tabela não for acessada pelo plano de consulta. Isso pode ser causado pela opção do otimizador de não acessar a tabela, ou porque uma exibição indexada é acessada. No último caso, o acesso a uma exibição indexada pode ser evitado usando a OPTION (EXPAND VIEWS)
dica de consulta.