简体   繁体   English

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

[英]How do I backup Sql Server Express database programatically?

I've written a Windows application which uses the Sql Express database server. 我编写了一个使用Sql Express数据库服务器的Windows应用程序。

How can I programatically backup and restore the database through my application? 如何通过我的应用程序以编程方式备份​​和还原数据库?

You could have your application launch a .sql file that does the backing up or restoring for you. 您可以让应用程序启动.sql文件,为您进行备份或还原。 Granted, I've mostly seen this done in a Scheduled Task, but I suppose you could do it from a triggered event inside your app. 当然,我大多数时候都看到过这是在计划任务中完成的,但我想你可以通过应用程序中的触发事件来完成。

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

UPDATE: 更新:

As pointed out in the comments, this won't work if you don't have SQL Management Studio installed on the server. 正如评论中指出的那样,如果您没有在服务器上安装SQL Management Studio,这将不起作用。 Alternatively, you could call a stored procedure. 或者,您可以调用存储过程。 Upon reflecting, I'm not sure why I didn't suggest the stored proc first - probably because the other methodology was fresh on my brain due to being forced to implement it that way in a previous project. 经过反思,我不知道为什么我没有先建议存储过程 - 可能是因为其他方法在我的大脑中是新鲜的,因为被迫在之前的项目中以这种方式实现它。

You can request a backup from within your app by executing: 您可以通过执行以下命令从应用内请求备份:

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

Or use SQL SMO Objects SqlBackup() directly. 或者直接使用SQL SMO Objects SqlBackup()

You could use SQL Server Management Objects 您可以使用SQL Server管理对象

First add a reference in your project to: Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SmoExtended.dll, Microsoft.SqlServer.SqlEnum.dll and Microsoft.SqlServer.SmoEnum.dll. 首先在项目中添加一个引用:Microsoft.SqlServer.Smo.dll,Microsoft.SqlServer.SmoExtended.dll,Microsoft.SqlServer.SqlEnum.dll和Microsoft.SqlServer.SmoEnum.dll。

After that to Backup your Database follow this sample: 之后备份您的数据库请遵循以下示例:

//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); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用SMO备份SQL Server 2012数据库 - How do I backup a SQL Server 2012 database using SMO 如何从数据库SQL Server Express进行热备份 - How to take a hot backup from a database SQL Server Express 我如何以编程方式发布SQL Server数据库项目? - How can I programatically publish a SQL Server Database Project? 如何将远程SQL Server Express数据库部分复制到本地SQL Server Express数据库? - How to do a partial copy of a remote SQL Server Express database to a local SQL Server Express database? 如何备份和恢复SQL服务器数据库文件? - How to Backup and Restore SQL server database files? 如何在C#MVC应用程序中的运行时创建SQL Server Express数据库? - How do I create a SQL Server Express database at runtime in a C# MVC App? 如何在ASP.NET Core项目中指向我的完整SQL Server Express数据库? - How do I point to my full SQL Server Express database in ASP.NET Core project? 如何获取SQL Server Express数据库和DbContext对象以共享数据? - How do I get a SQL Server Express database and DbContext object to share data? 如何以编程方式备份​​SQL Server 2014 Express Localdb(.mdf)文件 - How to backup a SQL Server 2014 Express Localdb (.mdf) file programmatically 以编程方式还原数据库(SQL Server) - Restore a Database Programatically (SQL Server)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM