2013-07-29 6 views
8

Ho un file bak (che è un file di database di backup per un file mdf 2005 Express del server SQL) e dovrei ottenere il file MDF in modo che possa lavorare sulle sue tabelle, come posso ottenere il file MDF originale da questo file bak? Sto usando Visual Studio 2012, è necessario avere uno studio di gestione? Ho provato a ripristinare questo file bak in un database vuoto in un altro sistema che contiene SQL Express Server Management Studio 2008, ma dice che i database non corrispondono, che cosa sta andando male?ripristino del file MDF originale dal file bak

risposta

5

Se è stato creato un database vuoto, per sovrascriverlo con il backup sarà necessario specificare il parametro WITH REPLACE.

Inoltre, potrebbe essere necessario specificare il parametro MOVE per inserire i file nelle posizioni corrette.

Si dovrebbe essere in grado di trovare abbastanza facilmente queste opzioni nel GUI quando si fa il ripristino, o, in alternativa è possibile creare script fuori utilizzando il riferimento qui:

How to: Restore a Database to a New Location and Name (Transact-SQL)

+0

grazie, ma come posso eseguire questa azione tramite codice? dove dovrei eseguire il codice di esempio fornito nel tuo link? Dovrei creare un oggetto SQLCommand ed eseguire quegli script? –

+0

Puoi farlo, oppure puoi semplicemente eseguire i comandi nello studio di gestione SQL – steoleary

11

Tenete a mente che il ripristino di una il file di backup del database non fornirà i file MDF (e LDF) originali. L'unico modo per ottenere il file MDF originale è copiarlo È possibile eseguire il T-SQL suggerito da steeleary in Visual Studio, vedere più qui: How to: Run SQL Scripts in Solution Explorer. Puoi anche farlo in SQL Server Management Studio.

Il database vuoto creato non aiuta molto, a meno che non si desideri sincronizzarlo con il backup. Ma per questo è necessario uno strumento di terze parti

Innanzitutto, eseguire quanto segue per individuare i nomi dei file logici nel backup. Questo esempio è per il backup denominata TestFull.bak memorizzati in E: \ Test

RESTORE FILELISTONLY 
FROM DISK = 'E:\Test\TestFull.bak' 
GO 

enter image description here

I nomi logici devono essere utilizzati nello script successivo. Inoltre, aggiorna i percorsi e i nomi utilizzati

RESTORE DATABASE YourDB 
FROM DISK = 'E:\Test\TestFull.bak' 
WITH MOVE 'test1' TO 'E:\test\TestMDFFile.mdf', 
MOVE 'test1_log' TO 'E:\test\TestLDFFile.ldf' 
+0

grazie Milena, ho il file MDF usando Management Studio, ma in realtà dovrei eseguire questa operazione tramite codice, cioè i miei utenti dovrebbero essere in grado di leggere i dati dal file bak, quindi dovrei essere in grado di ripristinare MDF dal file bak tramite codice, quindi collegarmi a MDF e leggere il database, come posso eseguire questa operazione nel mio codice C#? c'è qualche campione? –

+0

@Ali_dotNet Non posso fare a meno di C# :( –

+0

ok, usi un'altra lingua? –