Sql-Server-2012

每月自動執行 SQL 任務

  • June 29, 2016

在每個月初,我必須給一個團隊一份實時數據庫的副本,該副本保存在每天凌晨 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!準備好使用這個知識中心學習很多東西。

引用自:https://dba.stackexchange.com/questions/107029