Sql-Server

在儲存過程中生成數據庫創建腳本

  • July 26, 2017

我希望自動擦除我們的測試環境,使其在每個 sprint 結束時與生產保持一致。

就目前而言,目前正在通過獲取完整備份並使用 move&replace 進行恢復的測試環境來完成這項工作,但這佔用了我們擁有的大部分空間。

目的是從頭開始創建環境並僅填充所需的表。

我可以使用“右鍵點擊 > 任務 > 生成腳本…”來創建數據庫的框架。

有沒有辦法從儲存過程中創建該腳本,以便可用於重新創建數據庫

此外,我正在研究這一點,但顯然該腳本只會以其目前大小創建數據庫,因此一旦生成腳本,就需要修改所有文件大小

為任何幫助而歡呼

您可以使用幾種方法。按難度排序(從最簡單到最難恕我直言)

  • 手動創建(使用生成腳本)僅結構數據庫用複制所需的數據填充它,然備份份/恢復它。(你也可以只做結構並對數據副本進行編碼)

    • Up side- 這是最簡單的編碼方法,應該相當快
    • Down side- 隨著源數據庫的程式碼/數據發生變化,這需要不斷維護。
  • 手動創建腳本並讓 SP 執行它們(可能使用動態 SQL)並複制數據。

    • Up side- 也相當容易實現,不需要您將複製的額外“模型”數據庫。
    • Down side- 也需要經常維護
  • Powershell - 您使用 POSH 腳本創建新數據庫、生成腳本並執行它們。

    • Up side- 這是最強大的方法。它不需要太多維護,您甚至可以找到其他人編寫的腳本作為起點。
    • Down side- 這要求您至少對 Powershell 有一點了解。(這也可能被認為是有利的一面)
  • OLE 自動化程序 - sp_Create 等。這將是最困難/最複雜的方法(至少知道一點這個和 PoSH)但一旦編寫也不需要那麼多維護。

    • Up Side- 最少的維護,它都可以在 SQL 內部執行
    • Down side- 更難的程式碼,您可能找不到已經建構的腳本,您必須啟用 OLE 自動化程序(安全風險,如果最小的話)。

我可能應該注意到,我最初的想法是您希望它可以重現。如果您只需要做一次,那麼@MaxVernon 是對的。截斷不需要數據的表(或刪除不需要的數據)並縮小。您可能需要一次執行此操作,具體取決於您對空間的限製程度。

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