預先部署/部署後指令碼概觀
適用於: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
。