none
Sql Server transações RRS feed

  • Pergunta

  • quando executo uma transação no sql server

    ele trava a tabela ou os resgistros que vou usar?


    • Editado jceoms segunda-feira, 6 de abril de 2015 14:08
    segunda-feira, 6 de abril de 2015 13:53

Respostas

  • Mariana, obrigado pela informação, eu li sobre isso agora, ficou claro!

    abs,


    Vinícius Kleber

    • Marcado como Resposta jceoms terça-feira, 7 de abril de 2015 12:10
    segunda-feira, 6 de abril de 2015 18:46

Todas as Respostas

  • Jceoms, bom dia!

    Ao fazer uma requisição o SQL bloqeueia a tabela ate que sua requisição seja finalizada. Veja o artigo abaixo!

    https://angmaximo.wordpress.com/2012/06/11/locks-blocks-deadlocks/


    Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida.

    Att,

    André Côrte
    Analista de Sistema
    Skype: corte.solutions
    Nosso trabalho
    Grupo de Estudo no Facebook
    Canal de Estudo no Youtube

    segunda-feira, 6 de abril de 2015 14:00
  • então depende ce como eu vou executar o comando?

    mas por default o sql server não bloqueia a tabela toda?

    segunda-feira, 6 de abril de 2015 14:05
  • Jceoms, bom dia!

    Ao fazer uma requisição o SQL bloqeueia a tabela ate que sua requisição seja finalizada. Veja o artigo abaixo!

    https://angmaximo.wordpress.com/2012/06/11/locks-blocks-deadlocks/


    Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida.

    Att,

    André Côrte
    Analista de Sistema
    Skype: corte.solutions
    Nosso trabalho
    Grupo de Estudo no Facebook
    Canal de Estudo no Youtube

    André, afirmar que o SQL vai bloquear a tabela toda é um erro.

    Podemos ter bloqueios exclusivos em linhas, páginas de dados e também da tabela toda, assim como está escrito no artigo que citou, dependendo do que a sua transação está fazendo: "Locks podem ocorrer a nível de linhas, páginas de dados e tabelas."


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    segunda-feira, 6 de abril de 2015 14:49
  • preciso que bloqueia a tabela
    segunda-feira, 6 de abril de 2015 14:51
  • jceoms,

    Como disse ao André, o SQL nem sempre bloqueia a tabela toda. Depende do que você está fazendo.

    Exemplo: executar um UPDATE sem where irá bloquear a tabela toda.

    Executar um UPDATE em apenas uma linha não irá bloquear a tabela. Irá bloquear apenas aquela linha enquanto o UPDATE é realizado.

    Sua dúvida é genérica ou você tem algum caso específico? Se tiver, explique.. acho que assim podemos ajudar de uma maneira melhor.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    segunda-feira, 6 de abril de 2015 14:51
  • Deleted
    segunda-feira, 6 de abril de 2015 14:56
  • Deleted
    segunda-feira, 6 de abril de 2015 15:24
  • Usa a o comando abaixo, com isso se você abrir a transação ele vai bloquear os outros processos mesmo usando nolock. Porém precisa ser dentro de um block begin tran!

    BEGIN TRAN
    ALTER TABLE A
    SET
    (
    LOCK_ESCALATION = TABLE
    )

    abraço,


    Vinícius Kleber


    segunda-feira, 6 de abril de 2015 15:24
  • Usa a o comando abaixo, com isso se você abrir a transação ele vai bloquear os outros processos mesmo usando nolock. Porém precisa ser dentro de um block begin tran!

    BEGIN TRAN
    ALTER TABLE A
    SET
    (
    LOCK_ESCALATION = TABLE
    )

    abraço,


    Vinícius Kleber


    Vinícius, 

    O LOCK_ESCALATION = TABLE é o default para o SQL Server e não fará com que o SQL bloqueie a tabela para cada transação que for feita.

    O SQL Server só fará o LOCK na tabela quando houver mais de 5000 locks em um único nível da hierarquia de locks.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    • Sugerido como Resposta Vinícius Matias quarta-feira, 8 de abril de 2015 01:20
    segunda-feira, 6 de abril de 2015 16:29
  • jceoms,

    Porque você precisa que a tabela inteira fique bloqueada? Detalhe sua necessidade  e seu cenário para indicarmos um caminho.



    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    segunda-feira, 6 de abril de 2015 16:33
  • Mariana, obrigado pela informação, eu li sobre isso agora, ficou claro!

    abs,


    Vinícius Kleber

    • Marcado como Resposta jceoms terça-feira, 7 de abril de 2015 12:10
    segunda-feira, 6 de abril de 2015 18:46
  • jceoms,

    O post que marcou como resposta não resolve seu problema, certo? Já que foi uma resposta do Vinícius pra um post meu.
    Por favor, se alguma resposta resolveu seu problema, marque-a. Senão detalhe mais para que possamos tentar ajudar.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    terça-feira, 7 de abril de 2015 12:54