[英]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.