terça-feira, 14 de fevereiro de 2012

Diferença entre NOLOCK e WITH (NOLOCK)

 

A hint “nolock” utilizadas em consulta, permite que seja realizado a leitura suja das informações, ou seja, permite a leitura de dados de uma transação que ainda não foi efetuado Commit/Rollback.

O ‘WITH’ logo depois o nome da tabela é recomendada, mas opcional:

CORRETO

SELECT * FROM TBNOTAFISCAL WITH (NOLOCK)   

CORRETO

SELECT * FROM TBNOTAFISCAL (NOLOCK)  

A partir do SQL Server 2005, a sintaxe do NOLOCK passou a exigir o uso do ‘WITH’ quando se é utilizado multiplos hins na consulta, no exemplo a seguir é utilizado o hint NOLOCK junto com um hint que força a utilização de um indice.

ERRADO

SELECT * FROM TBNOTAFISCAL (INDEX=INDNF, NOLOCK) 

Incorrect syntax near 'INDEX'. 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.

CORRETO

SELECT * FROM TBNOTAFISCAL WITH (INDEX=INDNF, NOLOCK) 

ERRADO

SELECT * FROM TBNOTAFISCAL NOLOCK

No exemplo acimo não será utilizado o hint NOLOCK e sim criado um alias para a tabela

Segue um Video com exemplos de utilização do NOLOCK

Nenhum comentário: