Sql-Server
在儲存過程中生成數據庫創建腳本
我希望自動擦除我們的測試環境,使其在每個 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 是對的。截斷不需要數據的表(或刪除不需要的數據)並縮小。您可能需要一次執行此操作,具體取決於您對空間的限製程度。