Quero renomear um banco de dados, mas continuo recebendo o erro que 'não foi possível obter o bloqueio exclusivo' no banco de dados, o que implica que há algumas conexões ainda ativas.
Como posso matar todas as conexões com o banco de dados para poder renomeá-lo?
Script para fazer isso, substitua 'DB_NAME' pelo banco de dados para eliminar todas as conexões com:
fonte
and spid <> @@SPID
àSELECT @sKillConnection
declaração para que não tentasse eliminar minha conexão atual, o que geraria uma mensagem de erro.Mate-o e mate-o com fogo:
fonte
Usando o SQL Management Studio Express:
Na árvore do Pesquisador de objetos, vá para Gerenciamento em "Monitor de atividades" (se você não conseguir encontrá-lo, clique com o botão direito do mouse no servidor de banco de dados e selecione "Monitor de atividades"). Ao abrir o Activity Monitor, você pode visualizar todas as informações do processo. Você poderá encontrar os bloqueios do banco de dados de seu interesse e eliminar esses bloqueios, o que também matará a conexão.
Você poderá renomear depois disso.
fonte
Eu sempre usei:
fonte
fonte
Ficar off-line leva um tempo e às vezes tenho alguns problemas com isso.
Maneira mais sólida na minha opinião:
Destacar Clique com o botão direito do mouse em DB -> Tarefas -> Desanexar ... marque "Drop Connections" Ok
Recoloque o botão direito do mouse em Bancos de dados -> Anexar .. Adicionar ... -> selecione seu banco de dados e altere a coluna Anexar como para o nome do banco de dados desejado. Está bem
fonte
use o banco de dados 'master' e execute esta consulta, ele matará todas as conexões ativas do seu banco de dados.
fonte
Normalmente, encontro esse erro quando estou tentando restaurar um banco de dados. Geralmente, apenas vou para o topo da árvore no Management Studio e clico com o botão direito do mouse e reinicio o servidor de banco de dados (porque está em uma máquina de desenvolvimento, isso pode não ser o ideal em produção ) Isso fecha todas as conexões com o banco de dados.
fonte
ALTER DATABASE ... SET SINGLE_USER
comandos em outras respostas retornaram o mesmo erro 'não foi possível obter o bloqueio exclusivo').No MS SQL Server Management Studio, no explorador de objetos, clique com o botão direito do mouse no banco de dados. No menu de contexto a seguir, selecione 'Tarefas -> Desligar'
fonte
Outra abordagem "mate-o com fogo" é apenas reiniciar o serviço MSSQLSERVER. Eu gosto de fazer coisas na linha de comando. Colar isso exatamente no CMD fará com que: NET STOP MSSQLSERVER & NET START MSSQLSERVER
Ou abra "services.msc" e localize "SQL Server (MSSQLSERVER)" e clique com o botão direito do mouse, selecione "reiniciar".
Isso "com certeza, com certeza" mata TODAS as conexões com TODOS os bancos de dados em execução nessa instância.
(Gosto disso melhor do que muitas abordagens que alteram e alteram a configuração no servidor / banco de dados)
fonte
Veja como esse tipo de coisa é confiável no MS SQL Server Management Studio 2008 (pode funcionar para outras versões também):
fonte
A opção que trabalha para mim nesse cenário é a seguinte:
fonte
Tente o seguinte:
fonte
Clique com o botão direito do mouse no nome do banco de dados, clique em Propriedades para obter a janela de propriedades, Abra a guia Opções e altere a propriedade "Restringir Acesso" de Multiusuário para Único Usuário. Quando você pressiona o botão OK, ele solicita que você feche todas as conexões abertas, selecione "Sim" e está pronto para renomear o banco de dados ....
fonte
Eles não funcionaram para mim (SQL2008 Enterprise), também não consegui ver nenhum processo em execução ou usuários conectados ao banco de dados. Reiniciar o servidor (clique com o botão direito do mouse em Sql Server no Management Studio e selecione Reiniciar) me permitiu restaurar o banco de dados.
fonte
Estou usando o SQL Server 2008 R2, meu banco de dados já estava definido para usuário único e havia uma conexão que restringia qualquer ação no banco de dados. Portanto, a solução recomendada do SQLMenace respondeu com erro. Aqui está um que funcionou no meu caso .
fonte
Eu uso sp_who para obter a lista de todos os processos no banco de dados. Isso é melhor porque você pode revisar qual processo matar.
Resultado
Você pode usar o comando na coluna KillCommand para matar o processo que deseja.
fonte
Você pode usar o comando SP_Who e eliminar todos os processos que usam seu banco de dados e renomeá-lo.
fonte