每月自動執行 SQL 任務
在每個月初,我必須給一個團隊一份實時數據庫的副本,該副本保存在每天凌晨 1 點的備份中 (D:\Backup) - 然後我們將此數據庫複製到其他地方的開發伺服器上並從分享。
當 1 月在月底完成時,我們會重複 2 月的過程——這次我們將團隊在 1 月期間所做的工作複製一份,並將其備份到檔案中。然後 2 月 1 日的數據庫在開發伺服器上上線。
是否有可能使這個過程自動化?我們的技術人員最近離開了我們,沒有記錄這個過程,所以到目前為止我已經設法手動完成,但想像它可以自動化。
你所說的是可能的。
虛擬碼如下所示:
[確保使用數據庫壓縮並啟用即時文件初始化。]
檢查它是否是使用該月的第一天
select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
- 如果是每月的第一天,則備份上個月的數據庫以存檔為
db_name_datetime_Month_archive.bak
.- 備份實時 PROD 數據庫並將文件複製到 DEV 伺服器並恢復/覆蓋目前數據庫 -
WITH REPLACE
恢復時使用選項。- 同步使用者
- (可選)由於您要從 PROD 恢復數據庫,您可能必須對其進行清理 - 刪除 PII 或任何敏感資訊。
- 向相關團隊(在您的情況下為 DEV)發送電子郵件,說明恢復或刷新工作已完成。
對於備份和恢復,您可以使用PowerShell(確保使用備份和恢復方法)或tsql。
您可以使用 sql 代理作業完全自動化上述虛擬碼。
如果您希望自動化每天備份的過程,並在月初自動將數據庫從另一個位置恢復到開發伺服器上。我會使用 SQL 腳本 exec 語句查看 BATCH 文件。然後設置一個 Windows 任務以根據任務執行(每月的第一天凌晨 3 點 - 執行恢復命令(該任務將指向一個批處理文件,該批處理文件將指向一個 .sql 腳本並執行它等)。
為了獲得更清晰的答案或實際範例,我會在這裡向團隊提供 Phil 所說的您使用的數據庫軟體,ORACLE 使用允許批處理操作等的 SQL*PLUS,SQL SERVER 有自己的等…
此外,如果您的目標與我所描述的不同,請詳細說明您正在嘗試做什麼以及您想要自動化哪些部分,我相信會有很多有用的評論/答案來幫助您指出正確的方向。
歡迎來到 Stackexchange DBA!準備好使用這個知識中心學習很多東西。