[英]How do I backup Sql Server Express database programatically?
我編寫了一個使用Sql Express數據庫服務器的Windows應用程序。
如何通過我的應用程序以編程方式備份和還原數據庫?
您可以讓應用程序啟動.sql文件,為您進行備份或還原。 當然,我大多數時候都看到過這是在計划任務中完成的,但我想你可以通過應用程序中的觸發事件來完成。
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:\\path\\to\\backup.sql";
p.Start();
更新:
正如評論中指出的那樣,如果您沒有在服務器上安裝SQL Management Studio,這將不起作用。 或者,您可以調用存儲過程。 經過反思,我不知道為什么我沒有先建議存儲過程 - 可能是因為其他方法在我的大腦中是新鮮的,因為被迫在之前的項目中以這種方式實現它。
您可以通過執行以下命令從應用內請求備份:
@"BACKUP DATABASE [MyDBName] TO DISK = 'c:\\somedir\\MyDBName.bak' WITH INIT"
( ref )
或者直接使用SQL SMO Objects SqlBackup() 。
您可以使用SQL Server管理對象
首先在項目中添加一個引用: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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.