O uso de WITH REPLACE quando os nomes de arquivos lógicos correspondem (para evitar o uso de WITH MOVE) falha quando o backup é de uma versão diferente do SQL? Eu tenho um backup do SQL 2008, mas quando tentei restaurá-lo usando WITH REPLACE em uma pasta do SQL 2012, apesar dos nomes de arquivos lógicos correspondentes no backup do banco de dados e no banco de dados que estou substituindo, está falhando, dando-me o erro de 'pesquisa de diretório' .
relate perguntas
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Esta é a resposta que encontrei para o motivo pelo qual a localização automática do arquivo não funciona no SQL 2012 para mim. Não acredito que tenha algo a ver com o backup ser do SQL 2008.
Isso foi retirado deste artigo do MSDN: http://blogs.msdn.com/b/ialonso/archive/2012/06/08/sql-server-changes-behavior-in-cases-where-file-autolocation-is- invocado-durante-a-fase-de-planejamento-de-uma-restauração-completa-com-replace-clause.aspx
WITH REPLACE
refere-se ao banco de dados , não a seus arquivos (embora o efeito líquido seja o mesmo, eu acho).Se você tiver nomes de arquivo que correspondam a um banco de dados existente e tentar restaurá-lo como um banco de dados diferente, será necessário usar
WITH MOVE
para impedir que o SQL Server tente substituir os arquivos existentes (o que não poderá fazer).O que está acontecendo no seu caso, quase certamente, é que seu backup de banco de dados de 2008 tem seus arquivos de dados em um caminho como:
Mas na máquina SQL Server 2012, essa pasta não existe; vai ser:
(As diferenças podem ser ainda mais pronunciadas se for uma instância nomeada.)
Então você tem duas opções neste momento:
RESTORE FILELISTONLY
, e crie essas pastas, certificando-se de que a conta de serviço do SQL Server tenha permissões de leitura/gravação/modificação.WITH MOVE
e coloque os arquivos em um local válido.Uma terceira opção extremamente boba que menciono apenas para completar é que você pode voltar ao servidor de 2008, mover o banco de dados para uma pasta que corresponda a uma pasta existente no novo servidor, fazer um novo backup e restaurar. Não faça isso. Apenas pare de tentar evitar digitar
WITH MOVE
...