2010-11-14 7 views
5

Tengo un archivo bak que contiene una copia de seguridad de una base de datos.Recuperando el nombre de la base de datos del archivo bak

Quiero restaurar esta base de datos a una nueva ubicación y necesito recuperar el nombre de la base de datos de este archivo ¿Alguna idea de cómo hacerlo?

Lo necesito para anular la ubicación del archivo de datos y la ubicación del archivo de registro.

Gracias por la ayuda.

Respuesta

11
RESTORE FILELISTONLY 
FROM DISK = 'full path to your .bak file' 

le mostrará los nombres de los archivos actuales en la copia de seguridad. Si hay varias copias de seguridad en un archivo y no especifica "WITH FILE = X", solo obtendrá información para la primera copia de seguridad en el archivo.

RESTORE DATABASE MyNewDBname 
    FROM DISK = 'full path to your .bak file' 
    WITH 
     MOVE 'LogicalFilename_Data' TO 'D:\somepath\...\MyDB.mdf', 
     MOVE 'LogicalFilename_Log' TO 'D:\somepath\...\MyDB.ldf'; 
GO 

esbozo con SMO (no probado):

Restore restoreDB = new Restore(); 
restoreDB.Database = myDatabase.Name; 
// Specify whether you want to restore database, files or log 
restoreDB.Action = RestoreActionType.Database; 
restoreDB.Devices.AddDevice(@"D:\somepath\...\MyDBFull.bak", DeviceType.File); 

restoreDB.ReplaceDatabase = true; // will overwrite any existing DB  
restoreDB.NoRecovery = true; 

// you can Wire up events for progress monitoring */ 
// restoreDB.PercentComplete += CompletionStatus; 
// restoreDB.Complete += RestoreCompleted; 

restoreDB.SqlRestore(myServer); 

Ref.

Usando SMO, se puede recuperar la lista de archivos utilizando Restore.ReadFileList

Ver también: How to restore a database from C#

+0

estoy trabajando con objetos SMO, no con las consultas SQL –

+1

usted no dijo que quería hacerlo mediante programación. –

+1

Tengo una etiqueta SMO y C# :-( –

Cuestiones relacionadas