Na verdade, estou tentando fazer um script (no Sql Server 2008) para restaurar um banco de dados de um arquivo de backup. Fiz o seguinte código e estou recebendo um erro -
Msg 3101, Level 16, State 1, Line 3
Exclusive access could not be obtained because
the database is in use.
Msg 3013, Level 16, State 1, Line 3
RESTORE DATABASE is terminating abnormally.
Como faço para corrigir esse problema?
IF DB_ID('AdventureWorksDW') IS NOT NULL
BEGIN
RESTORE DATABASE [AdventureWorksDW]
FILE = N'AdventureWorksDW_Data'
FROM
DISK = N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\Backup\AdventureWorksDW.bak'
WITH FILE = 1,
MOVE N'AdventureWorksDW_Data'
TO N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\DATA\AdventureWorksDW.mdf',
MOVE N'AdventureWorksDW_Log'
TO N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\DATA\AdventureWorksDW_0.LDF',
NOUNLOAD, STATS = 10
END
sql
sql-server
sql-server-2008
Vapor
fonte
fonte
Respostas:
Vou supor que se você está restaurando um banco de dados, não se preocupa com as transações existentes nesse banco de dados. Certo? Em caso afirmativo, isso deve funcionar para você:
Agora, um item adicional para ficar atento. Depois de definir o db no modo de usuário único, outra pessoa pode tentar se conectar ao db. Se eles forem bem-sucedidos, você não poderá prosseguir com a restauração. É uma corrida! Minha sugestão é executar todas as três declarações de uma vez.
fonte
USE master
, nãoUSER master
.ALTER DATABASE [AdventureWorksDW] SET MULTI_USER
no final para garantir que o banco de dados volte ao modo multiusuário normal.SINGLE_USER
modo no momento do backup, ele estará noSINGLE_USER
modo quando o backup for restaurado. Se estava noMULTI_USER
modo no momento do backup, estará noMULTI_USER
modo quando for restaurado. Você acertou em cheio: definitivamente vale a pena verificar depois que a restauração for concluída. Você também pode executar RESTORE HEADERONLY na mídia de backup e verificarIsSingleUser
ou fazer cálculos bit a bit naFlags
coluna.fonte
execute esta consulta antes de restaurar o banco de dados:
e este depois de restaurar:
fonte
Para mim, a solução é:
Marque Substituir o banco de dados existente (COM REPLACE) na guia optoins do lado esquerdo.
Desmarque todas as outras opções.
Selecione o banco de dados de origem e destino.
Clique OK.
É isso aí.
fonte
Use o seguinte script para localizar e eliminar todas as conexões abertas com o banco de dados antes de restaurá-lo.
Espero que isso ajude ...
fonte
Acho que você só precisa definir o db para o modo de usuário único antes de tentar restaurar, como abaixo, apenas certifique-se de que está usando
master
fonte
Acabei de reiniciar o serviço sqlexpress e a restauração foi concluída sem problemas
fonte
fonte
Solução 1: reinicie os serviços SQL e tente restaurar o banco de dados. Solução 2: reinicie o sistema / servidor e tente restaurar o banco de dados.
fonte
Configurar o banco de dados para o modo de usuário único não funcionou para mim, mas colocá-lo offline e, em seguida, colocá-lo online novamente funcionou. Está no menu do botão direito do banco de dados, em Tarefas.
Certifique-se de marcar a opção 'Eliminar todas as conexões ativas' na caixa de diálogo.
fonte
Esta é uma maneira de fazer a restauração do banco de dados da produção para o desenvolvimento:
NOTA: Estou fazendo isso por meio do trabalho SSAS para enviar o banco de dados de produção para o desenvolvimento diariamente:
Passo 1: Exclua o backup do dia anterior em desenvolvimento:
Passo 2: Copie o banco de dados de produção para o desenvolvimento:
Etapa 3: restaurar executando o script .sql
Código que está dentro do arquivo AE11_Restore.sql:
fonte
Recebi este erro quando não havia espaço em disco suficiente para restaurar o Db. Limpar um pouco de espaço resolveu.
fonte
colocar o banco de dados original off-line funcionou para mim
fonte