Falha na restauração do servidor 'servername'. (Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError: RESTORE não pôde iniciar o banco de dados 'ECP'. (Microsoft.SqlServer.Smo)
O banco de dados é criado, mas não está acessível usando o Object Explorer:
O banco de dados ECP não está acessível. (ObjectExplorer)
Obrigado por qualquer conselho sobre como posso fazer o banco de dados funcionar.
EDIT: Esta consulta
select state_desc from sys.databases where name = 'ECP';
retorna RECOVERY_PENDING
.
Excluí o banco de dados novamente e fiz uma nova tentativa com
restore verifyonly from disk = 'path\file';
Isso retorna
Tentar restaurar este backup pode encontrar problemas de espaço de armazenamento. As mensagens subsequentes fornecerão detalhes.
O caminho especificado por "F:\ECPDATA1\ECPDATA1.mdf" não está em um diretório válido.
A pesquisa de diretório para o arquivo "F:\ECPDATA2\ECPDATA2.ndf" falhou com o erro 3 do sistema operacional (falha ao recuperar o texto para este erro. Motivo: 15100).
A pesquisa de diretório para o arquivo "F:\ECPDATA3\ECPDATA3.ndf" falhou com o erro 3 do sistema operacional (falha ao recuperar o texto para este erro. Motivo: 15105).
A pesquisa de diretório para o arquivo "F:\ECPDATA4\ECPDATA4.ndf" falhou com o erro 3 do sistema operacional (falha ao recuperar o texto para este erro. Motivo: 15105).
A pesquisa de diretório para o arquivo "E:\ECPLOG1\ECPLOG1.ldf" falhou com o erro do sistema operacional 21 (falha ao recuperar o texto para este erro. Motivo: 15105).
O backup definido no arquivo 1 é válido.
Como diz que o conjunto de backup é válido, só preciso obter os arquivos especificados para que funcione, certo? Mas neste servidor não tenho uma unidade E:
ou F:
. Como posso ajustar isso no arquivo de backup? Ou é possível (não estou tão familiarizado com windows-server-2008-r2) ter algum tipo de link simbólico como no linux?
Sua restauração está falhando porque não há E:\ ou F:\ em sua máquina.
RESTORE FILELISTONLY FROM DISK = 'path\file';
- isso informará os nomes lógicos dos dados e arquivos de log.Construa um
RESTORE DATABASE
comando baseado nisso. Por exemplo (assumindo que os arquivos de dados são nomeadosECP_Data
,ECP_Data_2
, etc.):Além de corrigir os nomes de arquivo lógico, substitua
C:\...path to MSSQL\Data\
por qualquer caminho(s) que você deseja usar para armazenar os arquivos de dados/log. Você não precisa de uma pasta individual por arquivo, mas ainda pode querer separar dados e arquivos de log em discos diferentes. Observe que ainda pode falhar se qualquer unidade (s) que você escolher não tiver espaço suficiente para executar a restauração.Parece que você está restaurando um banco de dados de um servidor que possui uma unidade E: e F:. Você precisa MOVER os arquivos para um local que realmente exista durante RESTORE. Isso daria um comando de restauração parecido com este (extraído do SQL Server BOL):
Você também pode fazer isso na interface do usuário, acessando a guia OPÇÕES da caixa de diálogo de restauração e digitando novos caminhos na coluna "Restaurar como".
Se você estiver tentando restaurar o banco de dados de um servidor para outro servidor e o banco de dados não existir no servidor de restauração, tente o método abaixo.
Esse problema pode ocorrer depende desse motivo; Os arquivos de banco de dados podem estar localizados em nomes de disco diferentes que não existem no servidor de restauração.
Para resolver o problema no servidor de restauração; crie arquivos db e db que são anexados com o db. Os nomes de banco de dados e arquivos devem ser os mesmos do banco de dados no servidor de backup (para substituir o banco de dados). Em seguida, você pode tentar iniciar a restauração novamente com o modo de substituição verdadeiro .
Se alguém veio a esta questão ao procurar uma resposta para a tentativa falha de restaurar o banco de dados do SQL Server para o localdb (como eu fiz), então pode ser a limitação do localdb .
Eu usei o SQL Server Express e consegui fazer uma restauração.