Estou desenvolvendo ativamente meu esquema no SQL Server 2008 e frequentemente desejo executar novamente meu script de soltar / criar banco de dados. Quando eu corro
USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase')
DROP DATABASE [MyDatabase]
GO
Costumo receber este erro
Msg 3702, Level 16, State 4, Line 3
Cannot drop database "MyDatabase" because it is currently in use.
Se você clicar com o botão direito do mouse no banco de dados no painel do explorador de objetos e selecionar a tarefa Excluir no menu de contexto, há uma caixa de seleção para "fechar conexões existentes"
Existe uma maneira de especificar esta opção no meu script?
sql
sql-server
usuario
fonte
fonte
Vá para o Management Studio e faça tudo o que você descreve, apenas em vez de clicar em OK, clique em Script. Ele mostrará o código que será executado, que você poderá incorporar em seus scripts.
Nesse caso, você deseja:
fonte
De acordo com a documentação do ALTER DATABASE SET , ainda existe a possibilidade de que, após definir um banco de dados no modo SINGLE_USER, você não possa acessar esse banco de dados:
Portanto, um script completo para descartar o banco de dados com conexões existentes pode ser assim:
fonte
Eu sei que é tarde demais, mas pode ser que ajude alguém. ao usar isso, coloque seu banco de dados offline
fonte
Eu tentei o que hgmnz diz no SQL Server 2012.
Gerenciamento criado para mim:
fonte
ROLLBACK IMMEDIATE
usar, a declaração será incluída. Issosp_delete_database_backuphistory
vem da verificação de "Excluir informações de histórico de backup e restauração de bancos de dados".ALTER DATABASE SET SINGLE_USER ...
se não houver conexões atuais para fechar.tente este código C # para descartar seu banco de dados
DropDatabases públicos nulos estáticos (string dataBase) {
fonte