Falha na restauração do SQL com "O banco de dados já está aberto e só pode ter um usuário por vez"
Summary: Artigo da base de conhecimento (KB) que fornece uma solução para a falha de restauração do banco de dados SQL quando os usuários acessam o banco de dados.
Symptoms
Falha na restauração do banco de dados SQL para o local original com erros semelhantes à seguinte exibição:
avsql Error <40258>: sqlconnectimpl_smo::get_database_data_names Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Database 'Avamar1' is already open and can only have one user at a time.
Cause
Um ou mais usuários ou conexões estão acessando o banco de dados ao qual está sendo restaurado. O banco de dados original não poderá ser substituído se houver usuários ou conexões acessando o banco de dados.
Resolution
Altere o status do banco de dados do modo Multiusuário para Usuário Único.
Usando o SQL Server Management Studio
Para definir um banco de dados para o modo de usuário único:
-
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e expanda essa instância.
-
Clique com o botão direito do mouse no banco de dados a ser alterado e clique em Propriedades.
-
Na caixa de diálogo Propriedades do Banco de Dados, clique na página Opções.
-
Na opção Restrict Access, selecione Single.
-
Se outros usuários estiverem conectados ao banco de dados, uma mensagem Open Connections será exibida. Para alterar a propriedade e fechar todas as outras conexões, clique em Sim.
Como usar o Transact-SQL
Para definir um banco de dados para o modo de usuário único:
-
Conecte-se ao Mecanismo de Banco de Dados.
-
Na barra Standard, clique em New Query.
-
Copie e cole o exemplo a seguir na janela de consulta e clique no botão "Execute". Este exemplo define o banco de dados como
SINGLE_USERModo para obter acesso exclusivo. Em seguida, o exemplo define o estado do banco de dados Avamar1 comoREAD_ONLYe retorna o acesso ao banco de dados para todos os usuários. A opção de rescisãoWITH ROLLBACK IMMEDIATEé especificado no primeiroALTER DATABASEdeclaração. Isso faz com que todas as transações incompletas sejam revertidas e quaisquer outras conexões com o banco de dados Avamar1 sejam imediatamente desconectadas.
SQLCopy
USE master; GO ALTER DATABASE Avamar1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE Avamar1 SET READ_ONLY; GO ALTER DATABASE Avamar1 SET MULTI_USER; GO
Referência:
https://docs.microsoft.com/en-us/sql/relational-databases/databases/set-a-database-to-single-user-mode?view=sql-server-2017Feito isso, repita a restauração do banco de dados SQL para o local original.