Dicas SQL Server

Obter acesso exclusivo a um banco de dados SQL Server no Restore.

Obter acesso exclusivo a um banco de dados SQL Server no Restore
Obter acesso exclusivo a um banco de dados SQL Server no Restore

Veja como obter acesso exclusivo a um banco de dados SQL Server durante um Restore.

Ao restaurar um banco de dados, uma das coisas que você precisa fazer é garantir que você tenha acesso exclusivo ao banco de dados. Se houver outros usuários conectados no banco de dados, você não conseguirá fazer o restore.

Provavelmente o que acontecerá é que ao tentar fazer o restore do seu banco de dados você receberá o seguinte erro:

Msg 3101, Level 16, State 1, Line 1
Exclusive access could not be obtained because the database is in use.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

Obtendo o acesso exclusivo:

Para obter o acesso exclusivo, você precisa que todas as conexões sejam dropadas (apagadas), ou o banco de dados que eles as outras conexões estão acessando precisam ser alteradas para que não usem o banco de dados no momento que você estiver tentando restaurar. Você pode usar sp_who2 ou SSMS para ver quais conexões estão usando o banco de dados que você está tentando restaurar.

Usando KILL:

Uma opção para obter acesso exclusivo é usar o comando KILL para matar cada conexão que está usando o banco de dados. Mas esteja ciente de quais conexões você está matando e os problemas de ROLLBACK que podem precisar ocorrer durante esse processo.

Usando ALTER DATABASE (Meu preferido):

Uma outra opção é colocar o banco de dados no modo de usuário único e, em seguida, fazer a restauração. Isso também faz uma ROLLBACK dependendo da opção que você usa, mas fará todas as conexões de uma só vez. Veja abaixo o código para fazer isso:

ALTER DATABASE AdventureWorks2016 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
RESTORE DATABASE AdventureWorks2016 FROM DISK = 'D:\AdventureWorks2016.bak'
GO
Obter acesso exclusivo a um banco de dados SQL Server no Restore.