問題

我目前正在為我們的資料庫建立一個master ddl.歷史上我們使用備份/恢復版本我們的資料庫,而不是維護任何ddl指令碼.模式相當大.

我目前的想法:

  • 將指令碼分解為部分(可能在單獨的指令碼中):

    1. 表建立
    2. 新增索引
    3. 新增觸發器
    4. 加上約束
  • 每個指令碼都會被主指令碼呼叫。

  • 我可能需要一個指令碼暫時刪除約束以進行測試
  • 模式中可能有孤立的表,我計劃識別可疑的表.

有其他建議嗎?

編輯:如果有人知道自動化部分程序的好工具,我們正在使用MS SQL 2000(舊,我知道).

  最佳答案

我認為基本的想法是好的。

首先構建所有表然後構建所有約束的好處是可以按任何順序建立表.當我完成此操作時,我每個表有一個檔案,我放入一個名為“Tables”的目錄,然後是一個執行該目錄中所有檔案的指令碼.同樣,我有一個約束指令碼的資料夾(這也是外來鍵和索引),它在表構建後執行.

我將分隔觸發器和儲存過程的構建,並執行最後一個.關於這些的問題是它們可以在資料庫上執行和重新執行而不會影響資料.這意味著您可以像普通程式碼一樣對待它們.您應該在每個觸發器和過程指令碼的開頭包含“如果存在....下拉”語句,以使它們可以重新執行.

所以順序是

  1. 表建立
  2. 新增索引
  3. 加上約束

然後

  1. 新增觸發器
  2. 新增儲存過程

在我當前的專案中,我們正在使用MSBuild來執行指令碼.有一些擴充套件目標,您可以獲得它,允許您呼叫sql指令碼.過去我使用了perl,也很好(和批處理檔案......我不推薦 – 太有限了).

  相同標籤的其他問題

sqlsql-serverschemaddl