Eu tenho um script de restauração de banco de dados em um arquivo SQL e estou tentando restaurar um backup gerado de um banco de dados para um novo banco de dados (que existe). Esse arquivo SQL está sendo executado pelo SQLCMD na linha de comando. A janela de comando me informa que a restauração foi concluída com sucesso; no entanto, o banco de dados ainda está em um estado de restauração e não pode ser acessado. Por causa disso, o restante do meu processo em lote falha. Como posso tirar o banco de dados do estado de restauração e colocá-lo novamente em um estado online para que eu possa executar scripts de processo em lote adicionais?
Estou usando isso para fazer isso:
restore filelistonly
from disk = 'c:\program files\microsoft sql server\mssql10.mssqlserver\mssql\backup\olddb.bak'
GO
RESTORE DATABASE NewDB
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\olddb.bak'
WITH NORECOVERY, REPLACE,
MOVE 'OldDB' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\newdb.mdf',
MOVE 'OldDB_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\newdb.ldf'
Alguma ideia de por que meu banco de dados ainda está em estado de restauração se ele disser que foi concluído com sucesso?
Obrigado.
Você usou NORECOVERY que deixa o banco de dados pronto para receber restaurações diff/log
Você pode removê-lo acima ou simplesmente executar este
Veja MSDN RESTORE , procure pelo
[ RECOVERY | NORECOVERY | STANDBY ]
cabeçalho " "