Como forçar uma restauração em um banco de dados existente?

2

Eu tenho um banco de dados e quero forçar uma restauração por cima dele.

Eu marquei a opção:

  • Substituir o banco de dados existente (WITH REPLACE)

Mas,comoesperado,oSSMSnãopodesobrescreverobancodedadosexistente.

Claroquenãoqueronomesdearquivodiferentes;Euquerosobrescreverobancodedadosexistente.

Comofaçoparaforçarumarestauraçãoemumbancodedadosexistente?

EparaorastreadordepesquisadoGoogle:

File'%s'isclaimedby'%s'(4)and'%s"(3). The WITH MOVE clause can be used to relocate one or more files.
RESTORE DATABASE is terminating abnormally. (Microsoft SQL Server, Error: 3176)

Atualizar

O script (antes de eu excluir o banco de dados, porque eu precisava fazê-lo) era:

RESTORE DATABASE [HealthCareGovManager] 
FILE = N'HealthCareGovManager_Data',  
FILE = N'HealthCareGovManager_Archive',  
FILE = N'HealthCareGovManager_AuditLog' 
FROM  DISK = N'D:\STAGING\HealthCareGovManager10232013.bak' WITH  FILE = 1,  
MOVE N'HealthCareGovManager_Data' TO N'D:\CGI Data\HealthCareGovManager.MDF',  
MOVE N'HealthCareGovManager_Archive' TO N'D:\CGI Data\HealthCareGovManager.ndf',  
MOVE N'HealthCareGovManager_AuditLog' TO N'D:\CGI Data\HealthCareGovManager.ndf',  
MOVE N'HealthCareGovManager_Log' TO N'D:\CGI Data\HealthCareGovManager.LDF',  
NOUNLOAD,  REPLACE,  STATS = 10

Eu usei a interface do usuário para excluir o banco de dados existente, para que eu pudesse usar a interface do usuário para forçar uma substituição do banco de dados (não) existente.

Espero que possa haver uma resposta para que o cara seguinte possa ter uma resposta.

Não, ninguém estava no contexto do banco de dados (a mensagem de erro de outras conexões é bem diferente desse erro, e eu só consegui ver esse erro depois que eu matei as outras conexões).

    
por Ian Boyd 24.10.2013 / 17:33

2 respostas

3

Você tem 2 arquivos de banco de dados tentando restaurar o mesmo arquivo físico.

MOVE N'HealthCareGovManager_Archive' TO N'D:\CGI Data\HealthCareGovManager.ndf',  
MOVE N'HealthCareGovManager_AuditLog' TO N'D:\CGI Data\HealthCareGovManager.ndf',

Altere um desses caminhos físicos e seu erro deve desaparecer.

    
por 24.10.2013 / 18:08
2

Parece que você está tentando gravar dois arquivos ( HealthCareGovManager_Archive e HealthcareGovManager_AuditLog ) no mesmo arquivo de destino (D: \ CGI Data \ HealthCareGovManager.ndf).

Eles precisam ir para arquivos separados ou o SQL Server vai se deparar com um problema de uso de arquivo como você está vendo.

    
por 24.10.2013 / 18:08