首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

最簡單步驟備份 SQL Server 資料庫到本地:ASP + ADO + BACKUP DATABASE

     編輯:關於SqlServer

經典 ASP 頁面一鍵備份下載:適合輕量級託管環境無管理工具權限時

利用 `ADODB.Connection` 執行 `BACKUP DATABASE ... TO DISK` 將 `.bak` 寫至伺服器本地路徑,再用 `ADODB.Stream` 二進位輸出供下載。

核心程式碼 (VBScript/ASP)

<%
Response.Charset = "utf-8"
Session.Codepage = 65001
Response.Buffer = True
Response.Clear

' 連線字串 (依實際修改)
conStr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=endiva;Password=endiva;Data Source=211.160.78.6"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open conStr

' 備份檔名含時間戳
bkfname = Server.MapPath(FormatDateTime(Now(), 5) & "database.bak")  ' 如 20240115103000database.bak
sqlStr = "BACKUP DATABASE fang TO DISK='" & bkfname & "' WITH INIT"
conn.Execute sqlStr
conn.Close

Response.Write "database [fang] backup success!
" Response.Write "click download" ' 直接串流下載 (註解區塊,啟用即可) ' Set fn = Server.CreateObject("ADODB.Stream") ' fn.Mode = 3 ' adModeReadWrite ' fn.Type = 1 ' adTypeBinary ' fn.Open ' fn.LoadFromFile bkfname ' Response.ContentType = "application/octet-stream" ' Response.AddHeader "Content-Disposition", "attachment; filename=database.bak" ' Response.BinaryWrite fn.Read ' fn.Close %>

關鍵注意事項

項目說明
權限SQL 登入帳號需 `db_backupoperator` 或 `sysadmin`;IIS 應用程式池身分需對目標資料夾 `Write` 權限。
路徑`Server.MapPath` 對應網站虛擬目錄實體路徑,**備份檔會暴露在 Web 根目錄下**,下載後**必須立即刪除或移出 Web 可存取區**。
檔案大小ASP `Response.BinaryWrite` 受限於 `AspMaxRequestEntityAllowed` / `AspBufferingLimit` (IIS 6.0 預設 200KB),**大型資料庫無法直接下載**,需改用 FTP/網路分享/備份工具。
安全性生產環境**嚴禁**直接暴露備份下載頁面,應納入驗證/授權/稽核/加密/刪除流程。
編碼`FormatDateTime(Now(), 5)` 為 `YYYYMMDDHHMMSS` 格式 (視地區設定),建議改用 `Year(Now)&Right("0"&Month(Now),2)...` 固定格式。

現代化替代 (強烈建議)

  • Ola Hallengren Scripts + Agent 作業**:排程備份、壓縮、加密、驗證、清理、異地複製。
  • PowerShell + dbatools**:`Backup-DbaDatabase -SqlInstance SRV -Database fang -BackupDirectory \\NAS\Backup -Compress -Encrypt`。
  • Azure Blob / S3 直接備份**:`BACKUP DATABASE fang TO URL = 'https://account.blob.core.windows.net/container/fang_20240115.bak' WITH CREDENTIAL = '...', COMPRESSION, ENCRYPTION`。

結語

ASP + ADO 備份屬於 **「無工具權限、小資料庫、臨時救急」** 的末招。**生產環境請用標準化備份策略**,確保可恢復性 (RPO/RTO)、安全性、可審計性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved