Usuário com melhor resposta
Apagar BD com conexões abertas

Pergunta
-
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/;
Todas as 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/;
-
-
-
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