como migrar do sql 2000 para SQL Server 2008 por meio de restaurar?
-
06-07-2019 - |
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.
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