Sostituire un file di database MDF con file di backup durante l'esecuzione in C #
-
27-09-2019 - |
Domanda
Ho scritto un bel programma di lunga C # utilizzando LINQ to SQL e i miei dati sono memorizzati in un MDF file che si trova nei pressi del mio programma EXE . Una parte del mio programma ha una forma per il backup dei file di database semplicemente copiando il MDF e LDF i file in una cartella specificata dall'utente.
Tuttavia, se mi query al database e quindi provare a sostituire i file originali con i backup, vado a prendere il file aperto in un altro processo eccezione come previsto ! Il problema è che non so come chiudere il MDF file nel SqlServer esempio.
Sono abbastanza nuovo per LINQ to SQL e lascio che i maghi del Visual Studio per gestire la maggior parte del lavoro! Quindi mi dispiace in anticipo se tutto quello che sto cercando di fare sembra stupido! : D
Qualsiasi aiuto o suggerimenti per migliorare i metodi di programmazione per il mio caso è molto apprezzato.
Soluzione
Questo potrebbe non funzionare per le vostre esigenze, ma si potrebbe desiderare di prendere in considerazione il passaggio l'applicazione per utilizzare SQL Server Compact Edition ( "SQLCE") al posto di SQL Server (corretta). Sembra che si sta utilizzando il database come essenzialmente un file di supporto per la vostra applicazione, che non è davvero lo scopo previsto di SQL Server. SQLCE è progettato specificamente per questo genere di cose, e funziona alla grande sul desktop. Si può facilmente vicino la connessione a SQLCE e manipolare il file SDF come qualsiasi altro file (quello che si sta cercando di fare con il file Sql Server MDF, senza successo).
Aggiornamento: questo appare come quello che vi serve:
USE master
GO
ALTER DATABASE YourDatabaseName
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO
( questo risposta )
Altri suggerimenti
È necessario arrestare il server SQL o prendere disconnettere il database prima di copiare i file.