none
Apagar BD com conexões abertas RRS feed

  • Pergunta

  •  

    Bom dia Pessoal,

    Alguém sabe se existe a possiblidade de apagar um banco de dados mesmo existindo conexões abertas simultânes?

    Aguardo Resposta,

    Felipe Chimenti

    sexta-feira, 25 de julho de 2008 13:24

Respostas

  • assim faz.

     

    sem dropar as conex

    drop database teste

    Server: Msg 3702, Level 16, State 4, Line 1
    Cannot drop the database 'teste' because it is currently in use.

     

    depois

    alter database teste set single_user with rollback immediate

    drop database teste

     

    drop  na boa.

     

    Abs/;

    sexta-feira, 25 de julho de 2008 15:01

Todas as Respostas

  • Felipe,

     

    Sim, isso é possível sim.

     

    Mas porque, você deseja fazer isso?

    sexta-feira, 25 de julho de 2008 13:34
  • Felipe, como já mencionado pelo Júnior, sim é possível.

     

    Se vc fizer um DROP Database deverá funcionar corretamente.

    Vc não está conseguindo?

     

    [ ]s.

    sexta-feira, 25 de julho de 2008 13:38
    Moderador
  • assim faz.

     

    sem dropar as conex

    drop database teste

    Server: Msg 3702, Level 16, State 4, Line 1
    Cannot drop the database 'teste' because it is currently in use.

     

    depois

    alter database teste set single_user with rollback immediate

    drop database teste

     

    drop  na boa.

     

    Abs/;

    sexta-feira, 25 de julho de 2008 15:01
  • Obrigado Marcelo,

    Eu tinha procurado em alguns sites.....até da gringa....e vi esse código que você postou. Estava em dúvida se estava certo ou não...mesmo assim agradeço a você e todos pela ajuda.

    Valeu,

    Felipe Chimenti

     

    sexta-feira, 25 de julho de 2008 17:09
  • Felipe,

     

    Pode ter certeza que, um script postada pelo Colla é 99% de certeza que vai funcionar.

     

    Os outros 1% pode ser erro da máquina!!!!

    sexta-feira, 25 de julho de 2008 17:15
  • Boa Noite,

     

    Toda vez que um banco de dados é acessado, é imposto um bloqueio do tipo Shared no banco de dados inteiro. Isso significa que outros processos poderão conectar-se ao banco uma vez que Shared vs Shared é permitido. Para você excluir o banco de dados, é necessário um bloqueio exclusivo e esse não é compatível com um Shared. Assim sendo, se houver uma única conexão não será possível excluir o banco de dados.

     

    O script postado certifica-se primeiro de excluir as conexões e posteriormente o banco. O single_user não é o detalhe do script mas sim o WITH ROLLBACK IMMEDIATE. No entanto, esse tipo de script dá margem a uma possibilidade muito pequena de que alguém conecte-se ao banco de dados entre as instruções. Assim sendo, acredito que colocar o banco offline é uma opção mais interessante que o Single User. Eu faria da seguinte forma:

     

    ALTER DATABASE Banco SET OFFLINE WITH ROLLBACK IMMEDIATE

    DROP DATABASE Banco

     

    Uma vez que o banco esteja offline não é possível conectar-se.

     

    [ ]s,

     

    Gustavo

    sábado, 26 de julho de 2008 03:07