Pregunta

Estoy ejecutando 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

Recibo este error:

Mensaje 3176, Nivel 16, Estado 1, Línea 1 El archivo 'C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL10.SQL2008 \ MSSQL \ DATA \ MyDB_2009May11.mdf' es reclamado por 'Archive_Data' (3) y 'Data' (1). La cláusula WITH MOVE puede usarse para reubicar uno o más archivos. Msg 3013, Nivel 16, Estado 1, Línea 1 RESTORE DATABASE está finalizando de manera anormal.

¿Cómo diablos migro del servidor SQL 2000 a 2008 cuando todo lo que tengo es el archivo de copia de seguridad?

:) Cualquier ayuda es apreciada.

¿Fue útil?

Solución

haga una selección * de sysaltfiles y mire los nombres de archivo correctos y luego cambie los nombres en el movimiento para separarlos en consecuencia

Esto le dará los nombres de todos los grupos de archivos actualmente

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

si aún no tiene la secuencia de datos programada, haga esto primero. asegúrese de que las carpetas existan, es posible que también desee cambiar el tamaño de los archivos

    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

Ahora la restauración debería ser esta, observe la extensión ndf para el grupo de archivos archivados

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

Otros consejos

Está intentando mover Archive_Data y Data al mismo archivo; cambie el nombre del archivo y debería estar bien :)

También me encontré con este problema, y ??solo un pequeño complemento tuve que usar la cláusula REPLACE porque la base de datos a la que estaba restaurando era diferente a la de la copia de seguridad de la base de datos:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top