網站後台常需提供資料庫手動備份功能。雖然 SQL Server Agent 可排程自動備份,但透過 ASP.NET 程式碼觸發備份能整合權限控管與使用者介面。本文提供完整的備份按鈕點擊事件程式碼範例。
關鍵在於 T-SQL BACKUP DATABASE 指令:
BACKUP DATABASE [資料庫名稱] TO DISK = '備份檔完整路徑'
protected void Button1_Click(object sender, EventArgs e)
{
// 產生帶時間戳記的檔名:WebJake202401151430.bak
string newname = "WebJake" + DateTime.Now.ToString("yyyyMMddHHmm") + ".bak";
SqlConnection cn = DB.createCon(); // 假設為自訂連線工廠方法
string nepath = Server.MapPath("~/DataBack/") + newname;
string sql = "BACKUP DATABASE WebJake TO DISK = '" + nepath + "'";
SqlCommand cmd = new SqlCommand(sql, cn);
try
{
cn.Open();
cmd.ExecuteNonQuery();
// 備份成功:提供下載連結
HyperLink1.Text = "已成功備份至伺服器:" + nepath + " 請點擊下載!";
HyperLink1.NavigateUrl = "~/DataBack/" + newname;
HyperLink1.Visible = true;
}
catch (Exception ex)
{
Label1.Text = "備份失敗:" + ex.Message;
Label1.Visible = true;
}
finally
{
cmd.Dispose();
cn.Close();
cn.Dispose();
}
}
DateTime.Now.ToString("yyyyMMddHHmm") 產生唯一檔名,避免覆蓋Server.MapPath 將虛擬路徑轉為伺服器實體路徑HyperLink 提供直接下載,方便使用者離線保存try-catch-finally 確保連線資源正確釋放注意:執行備份的資料庫使用者需具備 db_backupoperator 角色權限;備份目錄需授予 ASP.NET 執行身分(如 NETWORK SERVICE 或 ASPNET)寫入權限。