Pergunta

Estou executando este código:

RESTORE DATABASE [MyDB_2009May11] 
FROM  DISK = N'C:\DB Copy\MyDB_2009May11.bak' 
WITH  
MOVE N'Archive_Data' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',  
MOVE N'Data' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',  
MOVE N'Log' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',  
NOUNLOAD,  
STATS = 10
GO

Estou recebendo este erro:

Msg 3176, nível 16, estado 1, linha 1 Arquivo 'C: \ Arquivos de Programas \ Microsoft SQL Server \ MSSQL10.SQL2008 \ MSSQL \ DATA \ MyDB_2009May11.mdf' é reivindicada por 'Archive_Data' (3) e 'Data' (1). A cláusula WITH movimento pode ser usado para um realocar ou mais arquivos. Msg 3013, nível 16, estado 1, linha 1 RESTORE DATABASE está finalizando de forma anormal.

Como a porcaria que eu migrar do sql server 2000-2008, quando tudo o que tenho é o arquivo de backup?

:) Qualquer ajuda é apreciada.

Foi útil?

Solução

fazer a * Selecionar de sysaltfiles e olhar para os nomes corretos e, em seguida, mudar os nomes na mudança para a parte em conformidade

Isto lhe dará os nomes de todos os grupos de arquivos atualmente

select filename from master..sysaltfiles
where name = 'MyDB_2009May11'

Se você não tem o databse roteiro ainda, em seguida, fazer isso em primeiro lugar. verifique se as pastas existe, você pode também querer alterar as filesizes

    CREATE DATABASE [MyDB_2009May11] ON (NAME = N'Data',
    FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf'
     , SIZE = 12, FILEGROWTH = 10%),
     (NAME = N'Archive_Data',
    FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf'
     , SIZE = 12, FILEGROWTH = 10%)
    LOG ON (NAME = N'Log', 
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf'
     , SIZE = 21, FILEGROWTH = 10%)
     COLLATE SQL_Latin1_General_CP1_CI_AS

Agora, a restauração deve ser isso, observe a extensão NDF para o arquivo de grupo de arquivos

RESTORE DATABASE [MyDB_2009May11] 
FROM  DISK = N'C:\DB Copy\MyDB_2009May11.bak' 
WITH  
MOVE N'Archive_Data' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',  
MOVE N'Data' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf',  
MOVE N'Log' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',  
NOUNLOAD,  
STATS = 10
GO

Outras dicas

Você está tentando mover Archive_Data e Dados para o mesmo arquivo - mudar o nome do arquivo e você deve estar bem:)

Eu corri para este problema, bem como, e só um pouco add on Eu tive que usar a cláusula REPLACE porque o banco de dados que eu estava restaurando a era diferente do que no de backup de banco de dados:

RESTORE DATABASE [MyDB_2009May11]  
FROM  DISK = N'C:\DB Copy\MyDB_2009May11.bak'  
WITH   
MOVE N'Archive_Data'  
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',   
MOVE N'Data'  
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf',   
MOVE N'Log'  
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',   
**REPLACE**,
NOUNLOAD,   
STATS = 10 
GO 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top