分享方式:


預先部署/部署後指令碼概觀

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

部署前和部署後指令碼是 SQL 指令碼,其包含在專案中以於部署期間執行。 預先部署/部署後指令碼包含在 .dacpac 中,但不會編譯成或使用資料庫物件模型進行驗證。 預先部署指令碼會在部署計劃執行之前執行,但在指令碼執行之前會計算部署計劃。 部署後指令碼會在部署計劃完成之後執行。

SQL 專案檔範例和語法

SQL 專案檔可以有單一預先部署指令碼和指定的單一部署後指令碼。

下列 SQL 專案檔範例將檔案 prep-db.sql 新增為預先部署指令碼。

...
  <ItemGroup>
    <PreDeploy Include="prep-db.sql" />
  </ItemGroup>

來自 SQL 專案檔的下列範例會將檔案 populate-app-settings.sql 新增為部署後指令碼。

...
  <ItemGroup>
    <PostDeploy Include="populate-app-settings.sql" />
  </ItemGroup>
</Project>

透過使用依序呼叫每個檔案的 SQLCMD 指令碼,可以在預先部署或部署後指令碼中執行多個檔案。

:r .\scripts\script1.sql
:r .\scripts\script2.sql

這些檔案應排除在資料庫模型建置之外,方法是在 Visual Studio 的檔案屬性中將 Build Action 屬性設定為 None,或在 .sqlproj 檔案中加入該檔案的項目,並將 Build 屬性設定為 None

...
  <ItemGroup>
    <Build Remove="scripts\script1.sql" />
    <Build Remove="scripts\script2.sql" />
  </ItemGroup>
</Project>

新增預先部署和部署後指令碼

在 [方案總管] 中,以滑鼠右鍵按一下專案,然後選取 [新增]>[指令碼]。 選取 [預先部署指令碼] 或 [部署後指令碼]

指令檔會新增至專案,並在查詢編輯器中開啟,您可以在其中完成指令碼。 每次部署專案時,都會在執行部署計劃之前或之後執行此指令碼。

在 [方案總管] 中,於專案節點上按一下滑鼠右鍵,然後依次選取 [新增]、[新增項目]。 [新增項目] 對話方塊隨即出現,選取 [顯示所有範本]。 然後選取 [資料表]。 選取 [預先部署指令碼] 或 [部署後指令碼]

指令檔會新增至專案,並在查詢編輯器中開啟,您可以在其中完成指令碼。 每次部署專案時,都會在執行部署計劃之前或之後執行此指令碼。

在 VS Code 或 Azure Data Studio 的 [資料庫專案] 檢視中,以滑鼠右鍵按一下專案,然後選取 [新增預先部署指令碼] 或 [新增部署後指令碼]。 提供不含副檔名的指令碼名稱。

指令檔會新增至專案,並在查詢編輯器中開啟,您可以在其中完成指令碼。 每次部署專案時,都會在執行部署計劃之前或之後執行此指令碼。

直接編輯 .sqlproj 檔案,以新增預先部署或部署後指令碼。 將 <PreDeploy><PostDeploy> 項目新增至 .sqlproj 檔案的 <ItemGroup> 區段。

例如,若要將指令碼 scripts\before-script.sql 作為預先部署指令碼新增至專案:

...
  <ItemGroup>
    <PreDeploy Include="scripts\before-script.sql" />
  </ItemGroup>

每次部署專案時,都會在執行部署計劃之前執行此指令碼 scripts\before-script.sql