Quiero escribir un código para mi copia de seguridad de base de datos SQL Server 2008 utilizando C# .Net en 4 Marco. ¿Alguien puede ayudar en esto?Cómo copia de seguridad de base de datos SQL mediante programación en C#
Respuesta
La siguiente Link ha explicado más detalles acerca de cómo realizar una copia de base de datos SQL Server 2008 utilizando C#
SQL copia de seguridad de base de datos se puede hacer uso de muchas maneras. Puede usar Comandos Sql como en la otra respuesta o crear su propia clase para hacer una copia de seguridad de los datos.
Pero estos son diferente modo de copia de seguridad.
- base de datos completa de copia de seguridad
- Base de Datos de copia de seguridad diferencial
- registro de transacciones de copia de seguridad
- de copia de seguridad con compresión
embargo, la desventaja de este método es que necesita su estudio de administración de SQL para ser instalado en tu sistema de cliente
se puede conectar a la base de datos utilizando SqlConnection y SqlCommand y ejecute el siguiente texto de comando, por ejemplo:
BACKUP DATABASE [MyDatabase] TO DISK = 'C:\....\MyDatabase.bak'
Ver here de ejemplos.
Es una buena práctica utilizar un archivo de configuración de esta manera:
<?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>
su código C# será algo como esto:
// 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();
}
}
Podría estar equivocado aquí, pero ¿eso no implica que el programa C# debe ejecutarse en el mismo servidor que la base de datos? –
@Eric Wu - La cadena de conexión en el archivo de configuración puede apuntar a cualquier servidor SQL, no tiene que estar en la misma máquina. – michaelmsm89
Es cierto. Pensé que estaba manipulando el archivo de alguna manera a nivel de aplicación. Parece que _backupfolder_ se refiere a una ruta en el servidor de la base de datos. –
funciona para mí:
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);
}
}
gracias por este código. ahorró mucho tiempo. –
Perfecto .. Gracias por compartir .. –
Puede usar las siguientes consultas para Hacer copia de seguridad y restaurar, debe cambiar la ruta de su copia de seguridad
Nombre de la base = [datos]
de copia de seguridad:
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
Restaurar:
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
¿En qué se diferencia esta respuesta de [esta respuesta] (http://stackoverflow.com/a/9835597/660921) que ha estado en el fuego durante cuatro años? – 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. Base de datos de restauración/copia de seguridad de servidor Sql desde el cliente remoto mediante programación
- 2. Crear una base de datos mediante programación en SQL Server
- 3. cómo tener copia de seguridad de base de datos SQL sin datos
- 4. ¿Cómo hago una copia de seguridad de una base de datos SQL usando PHP?
- 5. Copia de seguridad de la base de datos MySQL
- 6. ¿Cómo funciona la copia de seguridad en el servidor SQL?
- 7. C# Copia de seguridad SMO de la base de datos remota a la máquina local
- 8. copia de seguridad de una base de datos MySQL y descarga como un archivo
- 9. ¿Cómo hace una copia de seguridad y restaura una base de datos como copia en el mismo servidor?
- 10. ¿Cómo puedo hacer una copia de seguridad del archivo sqlite en la tarjeta SD mediante programación?
- 11. ¿Cómo rescato una pequeña porción de datos de una copia de seguridad de base de datos de SQL Server?
- 12. SQL Server realizar copia de seguridad con C#
- 13. ¿Cómo hacer una copia de seguridad de una base de datos filestream?
- 14. Copia de seguridad de datos de Android 2.2: ¿cómo hacer una copia de seguridad de DefaultSharedPreferences?
- 15. Cómo automatizar la copia de seguridad de la base de datos usando phpmyadmin
- 16. ¿Cómo crear la base de datos de Microsoft Access en C# mediante programación?
- 17. Archivos SQL Server MDF - Cómo hacer una copia de seguridad
- 18. Cómo hacer una copia de seguridad y restaurar la base de datos ORACLE 11g Como la base de datos SQL2005
- 19. Permisos de copia de seguridad
- 20. Error al restaurar la copia de seguridad de la base de datos
- 21. Importación de un volcado de base de datos (mysql) mediante programación mediante Java
- 22. iOS: ¿Copia de seguridad de la base de datos de datos en iCloud?
- 23. ¿Por qué mi script de copia de seguridad de base de datos no funciona en php?
- 24. Restaurar la copia de seguridad de la base de datos a través de la red
- 25. ¿Cómo crear una copia de seguridad de una sola tabla en una base de datos postgres?
- 26. ¿Cómo hacer una copia de seguridad de la base de datos MySQL en PHP?
- 27. ¿Cómo hago una copia de seguridad de una base de datos en un archivo .bak?
- 28. ¿Cómo hacer una copia de seguridad de la base de datos MySQL en Windows?
- 29. ¿Cómo puedo hacer una copia de seguridad de una base de datos MySQL en AWS?
- 30. copia de seguridad de la base de datos mysql con mysqldump
SMO implica instalados localmente en la máquina de objetos de administración de SQL donde se ejecuta el programa de copia de seguridad .NET , la solución SQL pura no. –