Desidero scrivere un codice per eseguire il backup del database Sql Server 2008 utilizzando C# in .Net 4 FrameWork. Qualcuno può aiutare in questo.Come eseguire il backup del database Sql a livello di codice in C#
risposta
Il seguente Link ha spiegato i dettagli completi su come eseguire il database SQL Server 2008 utilizzando C#
di backup di database SQL può essere fatto utilizzando molti modi. È possibile utilizzare i comandi Sql come nell'altra risposta oppure creare la propria classe per eseguire il backup dei dati.
Ma queste sono diverse modalità di backup.
- backup completo del database
- backup differenziale del database
- Backup log delle transazioni
- Backup con compressione
Ma lo svantaggio di questo metodo è che si ha bisogno del tuo studio di gestione di SQL per essere installato sul tuo sistema client.
è possibile connettersi al database utilizzando SqlConnection e SqlCommand ed eseguire il seguente testo del comando, ad esempio:
BACKUP DATABASE [MyDatabase] TO DISK = 'C:\....\MyDatabase.bak'
Vedi here per gli esempi.
E 'una buona pratica di utilizzare un file di configurazione come questa:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="MyConnString" connectionString="Data Source=(local);Initial Catalog=MyDB; Integrated Security=SSPI" ;Timeout=30"/>
</connectionStrings>
<appSettings>
<add key="BackupFolder" value="C:/temp/"/>
</appSettings>
</configuration>
tuo codice C# sarà qualcosa di simile:
// read connectionstring from config file
var connectionString = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;
// read backup folder from config file ("C:/temp/")
var backupFolder = ConfigurationManager.AppSettings["BackupFolder"];
var sqlConStrBuilder = new SqlConnectionStringBuilder(connectionString);
// set backupfilename (you will get something like: "C:/temp/MyDatabase-2013-12-07.bak")
var backupFileName = String.Format("{0}{1}-{2}.bak",
backupFolder, sqlConStrBuilder.InitialCatalog,
DateTime.Now.ToString("yyyy-MM-dd"));
using (var connection = new SqlConnection(sqlConStrBuilder.ConnectionString))
{
var query = String.Format("BACKUP DATABASE {0} TO DISK='{1}'",
sqlConStrBuilder.InitialCatalog, backupFileName);
using (var command = new SqlCommand(query, connection))
{
connection.Open();
command.ExecuteNonQuery();
}
}
Qui potrei sbagliarmi, ma questo non implica che il programma C# debba essere eseguito sullo stesso server del database? –
@Eric Wu - La stringa di connessione nel file di configurazione può fare riferimento a qualsiasi server SQL, non deve essere sulla stessa macchina. – michaelmsm89
Vero. Ho pensato che stesse manipolando il file in qualche modo a livello di applicazione. Sembra che _backupfolder_ si riferisca ad un percorso nel server di database. –
funziona per me:
public class BackupService
{
private readonly string _connectionString;
private readonly string _backupFolderFullPath;
private readonly string[] _systemDatabaseNames = { "master", "tempdb", "model", "msdb" };
public BackupService(string connectionString, string backupFolderFullPath)
{
_connectionString = connectionString;
_backupFolderFullPath = backupFolderFullPath;
}
public void BackupAllUserDatabases()
{
foreach (string databaseName in GetAllUserDatabases())
{
BackupDatabase(databaseName);
}
}
public void BackupDatabase(string databaseName)
{
string filePath = BuildBackupPathWithFilename(databaseName);
using (var connection = new SqlConnection(_connectionString))
{
var query = String.Format("BACKUP DATABASE [{0}] TO DISK='{1}'", databaseName, filePath);
using (var command = new SqlCommand(query, connection))
{
connection.Open();
command.ExecuteNonQuery();
}
}
}
private IEnumerable<string> GetAllUserDatabases()
{
var databases = new List<String>();
DataTable databasesTable;
using (var connection = new SqlConnection(_connectionString))
{
connection.Open();
databasesTable = connection.GetSchema("Databases");
connection.Close();
}
foreach (DataRow row in databasesTable.Rows)
{
string databaseName = row["database_name"].ToString();
if (_systemDatabaseNames.Contains(databaseName))
continue;
databases.Add(databaseName);
}
return databases;
}
private string BuildBackupPathWithFilename(string databaseName)
{
string filename = string.Format("{0}-{1}.bak", databaseName, DateTime.Now.ToString("yyyy-MM-dd"));
return Path.Combine(_backupFolderFullPath, filename);
}
}
grazie per questo codice. risparmiato un sacco di tempo. –
Perfetto .. Grazie per aver condiviso .. –
È possibile utilizzare le seguenti query per il backup e il ripristino, è necessario modificare il percorso per il backup
nome del database = [i dati]
Backup:
BACKUP DATABASE [data] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\data.bak' WITH NOFORMAT, NOINIT, NAME = N'data-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Restore:
RESTORE DATABASE [data] FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\data.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO
In che modo questa risposta è diversa da [questa risposta] (http://stackoverflow.com/a/9835597/660921) che è stata sul fuoco da quattro anni? – Carpetsmoker
SqlConnection con = new SqlConnection();
SqlCommand sqlcmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
con.ConnectionString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString;
string backupDIR = "~/BackupDB";
string path = Server.MapPath(backupDIR);
try
{
var databaseName = "MyFirstDatabase";
con.Open();
string saveFileName = "HiteshBackup";
sqlcmd = new SqlCommand("backup database" +databaseName.BKSDatabaseName + "to disk='" + path + "\\" + saveFileName + ".Bak'", con);
sqlcmd.ExecuteNonQuery();
con.Close();
ViewBag.Success = "Backup database successfully";
return View("Create");
}
catch (Exception ex)
{
ViewBag.Error = "Error Occured During DB backup process !<br>" + ex.ToString();
return View("Create");
}
- 1. Eseguire "backup" del database SQL Server Compact
- 2. Database di ripristino/backup server Sql dal client remoto a livello di codice
- 3. Come eseguire il backup del database SQLite?
- 4. Backup automatico del database SQL
- 5. Come eseguire il backup e il ripristino del database ORACLE 11g Come il database SQL2005
- 6. Come eseguire il backup di un database filestream?
- 7. Come eseguire il backup del database MySQL su Windows?
- 8. Come eseguire il backup dell'istanza del database di Amazon RDS MS SQL Server e ripristinarlo localmente
- 9. È possibile convertire a livello di codice database SQLite in istruzioni SQL in C/C++?
- 10. File MDF di SQL Server - Come eseguire il backup
- 11. Errore del database di backup di SQL Server 2012 Express
- 12. Backup di SQL Server tramite C#
- 13. C# - Crea tabella SQL Server a livello di codice
- 14. Come eseguire il backup del database con 100 righe in ogni tabella?
- 15. backup del database mysql con mysqldump
- 16. Come faccio a eseguire il backup del mio database PostgreSQL con Cron?
- 17. Come eseguire il backup di un database Solr?
- 18. Come eseguire il backup del server Git?
- 19. Come eseguire il backup dei processi di SQL Server Agent?
- 20. Creazione del file di database di SQL Server CE a livello di codice
- 21. Come funziona il backup nel server SQL?
- 22. Come eseguire il backup/ripristino del database SQLite su Android su Dropbox
- 23. Come creare database SQLite a livello di codice?
- 24. Best practice di backup del database grande
- 25. Backup dati Android 2.2: come eseguire il backup di DefaultSharedPreferences?
- 26. Eseguire il debug del codice C# senza eseguire l'applicazione
- 27. SQL - Come eseguire il backup di un database ed esportarlo come file MDF con MS SQL 2008 R2
- 28. Aggiungi data per SQL backup del database nome
- 29. Backup del database MySQL su Dropbox
- 30. Come eseguire il backup e il ripristino del repository SVN?
SMO implica oggetti di gestione di SQL installati localmente sulla macchina in cui l'esecuzione del programma di backup .NET , la soluzione SQL pura no. –