SMO: restaurar a una base de datos diferente

He leído una docena de blogs diferentes, además de leer los ejemplos de msdn y simplemente no funcionan para mí.

inalmente, lo que intento hacer es automatizar el movimiento de una base de datos de nuestra instancia de producción a nuestra instancia de desarrollo, o en la otra dirección.

El enfoque que he tomado es así:

copia de seguridad / restaurar a una base de datos temporaldetach temp DBcopiar archivos mdf y ldf a la otra instancia volver a colocar.

Estoy atrapado en 1 y no puedo entender por qué. Todo lo que he leído afirma que esto debería estar funcionando.

NOTA: he configuradodbName a la base de datos que quiero restaurar. También he configuradorestore.Database = dbName, dónderestore es una instancia deRestore clase en lasmo espacio de nombres.

mdf.LogicalFileName = dbName;
mdf.PhysicalFileName = String.Format(@"{0}\{1}.mdf", server.Information.MasterDBPath, dbName);
ldf.LogicalFileName = dbName + "_log";
ldf.PhysicalFileName = String.Format(@"{0}\{1}.ldf", server.Information.MasterDBPath, dbName);

restore.RelocateFiles.Add(mdf);
restore.RelocateFiles.Add(ldf);
restore.SqlRestore(server);

Esta es la excepción que recibo:

El archivo 'D: \ MSSQL.MIQ_Dev \ MSSQL.2 \ MSSQL \ Data \ MIQDesign2Detach.mdf' no se puede sobrescribir. Está siendo utilizado por la base de datos 'MIQDesignTest2'.
El archivo 'MIQDesign' no se puede restaurar a 'D: \ MSSQL.MIQ_Dev \ MSSQL.2 \ MSSQL \ Data \ MIQDesign2Detach.mdf'. Use WITH MOVE para identificar una ubicación válida para el archivo.
El archivo 'D: \ MSSQL.MIQ_Dev \ MSSQL.2 \ MSSQL \ Data \ MIQDesign2Detach.ldf' no se puede sobrescribir. Está siendo utilizado por la base de datos 'MIQDesignTest2'.
El archivo 'MIQDesign_log' no se puede restaurar a 'D: \ MSSQL.MIQ_Dev \ MSSQL.2 \ MSSQL \ Data \ MIQDesign2Detach.ldf'. Use WITH MOVE para identificar una ubicación válida para el archivo.
e identificaron @problemas mientras se planificaba la instrucción RESTORE. Los mensajes anteriores proporcionan detalles.
RESTORE DATABASE está finalizando de forma anormal.

¿Por qué intenta sobrescribir el mdf original? ¿No es laRelocateFiles cosas que deben especificar que desea que se guarde en unadiferent nombre de archivo físico?

Respuestas a la pregunta(2)

Su respuesta a la pregunta