簡體   English   中英

如何以編程方式備份​​Sql Server Express數據庫?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM