none
Nolock = with(nolock) RRS feed

  • Pergunta

  • Estou com a seguinte dúvida:

    É correto escrever nolock sem o with em sentencas Sql Server?

    Select campo1 From table (nolock)   


    Agradeço antecipadamente aos que responderem

    Abs.,

    Luis Rodrigues
    sp  
    sábado, 22 de agosto de 2009 21:10

Todas as Respostas

  • Olá,

    Procure usar o WITH, veja o comentário do próprio BOL:

    "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."

    Abraços
    Demétrio Silva
    segunda-feira, 24 de agosto de 2009 13:25
  • Demétrio,

    Acho que temos um pequeno engano.

    Se analisarmos o comentário do BOL, ele esta recomendando para omitir a declaração do With, pois o mesmo será removido em versões futuras do SQL Server.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 25 de agosto de 2009 14:46
  • Ops,

    Valeu Júnior, faltou o "Não".

    Abraços
    Demétrio Silva
    terça-feira, 25 de agosto de 2009 16:19
  • Pelo o que eu sei a partir do 2005 utiliza-se somente o (NOLOCK) o With é usado em versões anteriores,

    um outro exemplo é a variável do tipo table:


    Declare @teste as Table
    (
        ID int
    )

    No sql 2000 não funciona a declaração acima , é preciso tirar o "as" ou seja:

    Declare @teste  Table
    (
        ID int
    )
    Allan Tavares - Analista Programador Jr.
    terça-feira, 1 de setembro de 2009 19:45
  • Allan,

    Tanto o 2005 quanto o 2008 pode-se usar o WITH, no entanto, é recomendado não usar o with.

    Abraços
    Demétrio Silva
    terça-feira, 1 de setembro de 2009 20:21
  • Sim claro, provavelmento não será mais usado

    Att.
    Allan Tavares - Analista Programador Jr.
    terça-feira, 1 de setembro de 2009 20:23

  • Obrigado pessoal pelas respostas.

    Desde o Sql 2000 utilizo apenas o NOLOCK e fui questionado recentemente pela minha equipe que utiliza somente
    com o with(nolock).

    Lembro em ter lido em algum lugar, talvez no site do autor Itzik Ben Gan, o uso facultativo do with.

    Não encontrei nada sobre o assunto no site da Microsoft .


    Abraco,

    Luis C Rodrigues.
    quinta-feira, 3 de setembro de 2009 01:15
  • Boa Tarde,

    Ao meu ver a regra é bem clara.

    "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."

    "Omitir a palavra WITH é uma funcionalidade em desuso: Essa funcionalidade será removida em uma versão futura do SQL Server. Evite utilizar essa funcionalidade em novos projetos e planeja modificar as aplicações que utilizam essa funcionalidade"

    O que o Books OnLine recomenda é que se faça sim uso do WITH. No passado (e nas releases atuais), o seu uso ainda é opcional, mas no futuro será obrigatório. Isso pode ser confirmado na passagem a seguir:

    "With some exceptions, table hints are supported in the FROM clause only when the hints are specified with the WITH keyword"

    "Com algumas exceções, table hints só são suportados na cláusula FROM somente quanto os hints são especificados com a palavra WITH"

    No livro da Kallen Delaney (Inside Microsoft SQL Server - The Storage Engine) há também uma afirmação bem clara sobre esse assunto.

    "Not all the locking hints require the keyword WITH, but the syntax without WITH will go away in a future version. In SQL Server 2005, is recommended that all hints be specified using WITH."

    "Nem todos os hints de bloqueio requerem a palavra WITH, mas a sintaxe sem o WITH irá ser descontinuada em uma versão futura. No SQL Server 2005, é recomendável que todos os hints sejam especificados com a palavra WITH"

    Recomendo então que ao invés de omitir o WITH, especifique-o e não o contrário.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Unique Constraints – Aplicações, Alternativas e um lapso "justificável" do SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!710.entry
    Classifique as respostas. O seu feedback é imprescindível
    sábado, 5 de setembro de 2009 19:45
  • Conconrdo com vc Gustavo, a sintaxe correta é UTILIZAR O WITH


    Abraço a todos
    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    quarta-feira, 9 de setembro de 2009 16:33
  • Você deve utilizar o WITH, sem ele, no SQL 2005, seus SELECTs não irão funcionar!!



    Carlos Eduardo Pieren - MCP
    quarta-feira, 9 de setembro de 2009 16:39