Usuário com melhor resposta
Locks

Pergunta
-
Pessoal, tenho a seguinte dúvida: é possível que um database (todo o DB) seja locado por uma transação?
- Movido Gustavo Maia Aguiar terça-feira, 15 de junho de 2010 15:18 (De:SQL Server - Desenvolvimento Geral)
Respostas
-
Bom Dia,
Sua frase pode ter interpretações diferentes, mas vamos lá:
Existem algumas operações específicas que necessitam "locar" o banco como operações que usem os comandos ALTER DATABASE e DROP DATABASE.
Um SELECT especificamente não é capaz de locar uma base de dados. O SELECT pode no máximo locar uma tabela específica. O que pode acontecer é que um determinado processo pode locar essa tabela e os outros processos que dependem dela terem de ficar esperando. Por sua vez outros processos que dependam dos processos já bloqueados continuarão esperando e aí tem-se a sensação de um bloqueio generalizado. Em termos práticos "a base toda estará bloqueada", mas essa expressão está incorreta nesse caso. O que ocorre é que um determinado processo está bloqueando todos os demais processos da base (ainda que não esteja bloqueando a base).
Se quiser achar o "culpado" não deixe de ler o artigo abaixo:
Monitorando bloqueios com o uso de Recursive Common Table Expressions
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!885.entryCaso você seja mais adepto de ferramentas gráficas, o uso do Activity Monitor é uma opção.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comSimulado para o Exame 70-433 - MCTS: Microsoft SQL Server 2008 - Database Development – Parte 03
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1077.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 15 de junho de 2010 15:18
- Marcado como Resposta Rafael S. Melo terça-feira, 15 de junho de 2010 16:54
Todas as Respostas
-
Rafael, sim. existem alguns níveis de lock
RID (Uma linha), KEY (Linha de indice), PAGE (Página), EXTENT (Grupo de 8 páginas), HOBT (páginas que não tenham indices custerizado), TABLE (Toda a tabela), ILE (Um ficheiro), APPLICATION (Recurso específico), METADATA (Metadados), ALLOCATION_UNIT (“application unit”) e por fim DATABASE (Todo o banco).
-
-
Bom Dia,
Sua frase pode ter interpretações diferentes, mas vamos lá:
Existem algumas operações específicas que necessitam "locar" o banco como operações que usem os comandos ALTER DATABASE e DROP DATABASE.
Um SELECT especificamente não é capaz de locar uma base de dados. O SELECT pode no máximo locar uma tabela específica. O que pode acontecer é que um determinado processo pode locar essa tabela e os outros processos que dependem dela terem de ficar esperando. Por sua vez outros processos que dependam dos processos já bloqueados continuarão esperando e aí tem-se a sensação de um bloqueio generalizado. Em termos práticos "a base toda estará bloqueada", mas essa expressão está incorreta nesse caso. O que ocorre é que um determinado processo está bloqueando todos os demais processos da base (ainda que não esteja bloqueando a base).
Se quiser achar o "culpado" não deixe de ler o artigo abaixo:
Monitorando bloqueios com o uso de Recursive Common Table Expressions
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!885.entryCaso você seja mais adepto de ferramentas gráficas, o uso do Activity Monitor é uma opção.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comSimulado para o Exame 70-433 - MCTS: Microsoft SQL Server 2008 - Database Development – Parte 03
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1077.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 15 de junho de 2010 15:18
- Marcado como Resposta Rafael S. Melo terça-feira, 15 de junho de 2010 16:54
-