如何以编程方式备份​​Sql Server Express数据库?

时间:2010-06-02 12:45:09

标签: c# database

我编写了一个使用Sql Express数据库服务器的Windows应用程序。

如何通过我的应用程序以编程方式备份​​和恢复数据库?

3 个答案:

答案 0 :(得分:2)

您可以让应用程序启动.sql文件,为您进行备份或还原。当然,我大多数时候都是在计划任务中看到这个,但我想你可以通过你应用程序内的触发事件来做到这一点。

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:\\path\\to\\backup.sql";
p.Start();

更新:

正如评论中所指出的,如果您没有在服务器上安装SQL Management Studio,这将不起作用。或者,您可以调用存储过程。经过反思,我不知道为什么我没有先建议存储过程 - 可能是因为其他方法在我的大脑中是新鲜的,因为在之前的项目中被迫以这种方式实现它。

答案 1 :(得分:1)

您可以执行以下命令从应用内请求备份:

@"BACKUP DATABASE [MyDBName] TO DISK = 'c:\somedir\MyDBName.bak' WITH INIT"ref

或直接使用SQL SMO对象SqlBackup()

答案 2 :(得分:1)

您可以使用SQL Server Management Objects

首先在项目中添加一个引用:Microsoft.SqlServer.Smo.dll,Microsoft.SqlServer.SmoExtended.dll,Microsoft.SqlServer.SqlEnum.dll和Microsoft.SqlServer.SmoEnum.dll。

之后备份您的数据库请遵循以下示例:

//Connect to the server
Server srv = new Server();
//If Sql Server is not local or is a named instance you could do 
//Server srv = new Server("SERVERNAME");

Database db = srv.Databases("YourDB");

//Create a backup definition
Backup backup = new Backup(); 

backup.Action = BackupActionType.Database; 
backup.BackupSetDescription = "Full backup of Adventureworks2008R2"; 
backup.BackupSetName = "My app Backup"; 
backup.Database = "YourDB"; 

//Configure the backup device

BackupDeviceItem backupDevice = new BackupDeviceItem("YourDB.bak", DeviceType.File); 

backup.Devices.Add(backupDevice); 

//Specify wether do a full backup or not
backup.Incremental = false; 

//Specify log truncation mode
backup.LogTruncation = BackupTruncateLogType.Truncate; 

//Do the backùp
backup.SqlBackup(srv);