共用方式為


教學課程:建立和部署 SQL 專案

適用於:Microsoft Fabric 中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 SQL 資料庫

SQL 資料庫專案的開發週期可讓資料庫開發整合到持續整合和持續部署 (CI/CD) 工作流程中,成為開發的最佳做法。 雖然可以手動完成 SQL 資料庫專案的部署,但建議使用部署管線來自動化部署程序,讓進行中的部署根據您持續的本機開發執行,而不需要額外的工作。

本文逐步說明如何建立新的 SQL 專案、將物件新增至專案,以及設定持續部署管線,以便使用 GitHub Actions 建置和部署專案。 本教學課程是 SQL 專案入門文章內容的超集。 雖然本教學課程會在 GitHub Actions 中實作部署管線,但相同的概念適用於 Azure DevOps、GitLab 以及其他自動化環境。

在本教學課程中,您已:

  1. 建立新的 SQL 專案
  2. 將物件新增至專案
  3. 在本機建置專案
  4. 將專案簽入原始檔控制
  5. 將專案建置步驟新增至持續部署管線
  6. .dacpac 部署步驟新增至持續部署管線

如果您已完成 SQL 專案入門文章中的步驟,可以跳至步驟 4。 在本教學課程結束時,您的 SQL 專案會自動建置並部署到目標資料庫的變更。

必要條件

# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage

# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates

請確定您有下列項目,以完成 GitHub 中的管線設定:

  • 您可以在其中建立存放庫的 GitHub 帳戶。 免費建立一個

  • 已在您的存放庫中啟用 GitHub Actions。

注意

若要完成 SQL 資料庫專案的部署,您需要存取 Azure SQL 或 SQL Server 執行個體。 您可以在 Windows 或容器中使用 SQL Server 開發人員版本免費進行本機開發。

步驟 1:建立新的專案

我們會先建立新的 SQL 資料庫專案,再將物件手動新增其中,開始我們的專案。 還有其他方法可以建立專案,讓專案立即填入現有資料庫中的物件,例如使用結構描述比較工具

依序選取 [檔案]、[新增],接著選取 [專案]

在 [新增專案] 對話框中,選取搜尋框的條件 [SQL Server]。 熱門搜尋結果應該是 SQL Server 資料庫專案

[新增專案] 對話方塊的螢幕擷取畫面。

選取 [下一步] 繼續進行下一個步驟。 提供不需要符合資料庫名稱的專案名稱。 視需要驗證並修改專案位置。

選取 [建立] 以建立專案。 空白專案隨即開啟,並顯示在 [方案總管] 中以供編輯。

依序選取 [檔案]、[新增],接著選取 [專案]

在 [新增專案] 對話框中,選取搜尋框的條件 [SQL Server]。 熱門搜尋結果應該是 SDK 樣式 SQL Server 資料庫專案 (預覽版)

[新增專案] 對話方塊的螢幕擷取畫面。

選取 [下一步] 繼續進行下一個步驟。 提供不需要符合資料庫名稱的專案名稱。 視需要驗證並修改專案位置。

選取 [建立] 以建立專案。 空白專案隨即開啟,並顯示在 [方案總管] 中以供編輯。

在 VS Code 或 Azure Data Studio 的 [資料庫專案] 檢視中,選取 [新專案] 按鈕。

新增 Viewlet 的螢幕擷取畫面。

第一個提示會決定要使用的專案範本,主要是根據目標平台是 SQL Server 還是 Azure SQL。 如果系統提示您選取特定版本的 SQL,請選擇符合目標資料庫的版本,但如果目標資料庫版本未知,請選擇最新版本,因為稍後可以修改該值。

在出現的文字輸入中輸入專案名稱,該名稱不需要與資料庫名稱相符。

在出現的 [選取資料夾] 對話方塊中,選取專案資料夾的目錄、.sqlproj 檔案,以及要存放在其中的其他內容。

當系統提示您是否建立 SDK 樣式專案 (預覽版) 時,請選取 [是]

完成後,空白專案隨即開啟,並顯示在 [資料庫專案] 檢視中以供編輯。

安裝 Microsoft.Build.Sql 專案的 .NET 範本後,您可以從命令列建立新的 SQL 資料庫專案。 選項 -n 會指定專案的名稱,而選項 -tp 會指定專案目標平台。

使用選項 -h 來查看可用的選項。

# install Microsoft.Build.Sql.Templates
dotnet new sqlproject -n MyDatabaseProject

步驟 2:將物件新增至專案

在 [方案總管] 中,以滑鼠右鍵按一下專案節點並選取 [新增],然後選取 [資料表]。 [新增項目] 對話方塊隨即出現,您可以在其中指定資料表名稱。 選取 [新增] 以在 SQL 專案中建立資料表。

資料表會在 Visual Studio 資料表設計工具中開啟,其中包含範本資料表定義,您可以在其中新增資料行、索引和其他資料表屬性。 當您完成初始編輯時,請儲存檔案。

您可以透過 [新增專案] 對話方塊來新增更多資料庫物件,例如檢視、預存程序和函式。 以滑鼠右鍵按一下 [方案總管] 中的專案節點並選取 [新增],然後選取所需的物件類型,以存取對話方塊。 專案中的檔案可以透過 [新增] 下的 [新增資料夾] 選項,組織成資料夾。

在 [方案總管] 中,於專案節點上按一下滑鼠右鍵,然後依次選取 [新增]、[新增項目]。 [新增項目] 對話框隨即出現,選取 [顯示所有範本],然後選取 [資料表]。 將資料表名稱指定為檔案名稱,然後選取 [新增] 以在 SQL 專案中建立資料表。

資料表會在 Visual Studio 查詢編輯器中開啟,其中包含範本資料表定義,您可以在其中新增資料行、索引和其他資料表屬性。 當您完成初始編輯時,請儲存檔案。

您可以透過 [新增專案] 對話方塊來新增更多資料庫物件,例如檢視、預存程序和函式。 以滑鼠右鍵按一下 [方案總管] 中的專案節點並選取 [新增],然後在 [顯示所有範本] 後選取所需的物件類型。 專案中的檔案可以透過 [新增] 下的 [新增資料夾] 選項,組織成資料夾。

在 VS Code 或 Azure Data Studio 的 [資料庫專案] 檢視中,以滑鼠右鍵按一下專案節點,然後選取 [新增資料表]。 在出現的對話方塊中,指定資料表名稱。

資料表會在文字編輯器中開啟,其中包含範本資料表定義,您可以在其中新增資料行、索引和其他資料表屬性。 當您完成初始編輯時,請儲存檔案。

您可以透過專案節點上的特色選單來新增更多資料庫物件,例如檢視、預存程序和函式。 以滑鼠右鍵按一下 VS Code 或 Azure Data Studio 之 [資料庫專案] 檢視中的專案節點,然後按一下所需的物件類型,即可存取對話方塊。 專案中的檔案可以透過 [新增] 下的 [新增資料夾] 選項,組織成資料夾。

檔案可以藉由在專案目錄或巢狀資料夾中建立檔案,新增至專案。 檔案延伸模組應為 .sql,建議依物件類型或結構描述和物件類型進行組織。

資料表的基底範本可用作在專案中建立新資料表物件的起點:

CREATE TABLE [dbo].[Table1]
(
  [Id] INT NOT NULL PRIMARY KEY
)

步驟 3:建置專案

建置程序會根據專案檔中指定的目標平台,驗證物件與語法之間的關聯性。 建置程序的成品輸出是 .dacpac 檔案,可用來將專案部署到目標資料庫,並包含資料庫結構描述的編譯模型。

在 [方案總管]中,以滑鼠右鍵按一下專案節點,然後選取 [建置]

輸出視窗會自動開啟以顯示建置程序。 若有有錯誤和警告,會顯示在 [輸出視窗] 中。 成功建置時,會建立組建成品 (.dacpac 檔案),其位置會包含在組建輸出中 (預設值為 bin\Debug\projectname.dacpac)。

在 [方案總管]中,以滑鼠右鍵按一下專案節點,然後選取 [建置]

輸出視窗會自動開啟以顯示建置程序。 若有有錯誤和警告,會顯示在 [輸出視窗] 中。 成功建置時,會建立組建成品 (.dacpac 檔案),其位置會包含在組建輸出中 (預設值為 bin\Debug\projectname.dacpac)。

在 VS Code 或 Azure Data Studio 的 [資料庫專案] 檢視中,以滑鼠右鍵按一下專案節點,然後選取 [建置]

輸出視窗會自動開啟以顯示建置程序。 若有有錯誤和警告,會顯示在 [輸出視窗] 中。 成功建置時,會建立組建成品 (.dacpac 檔案),其位置會包含在組建輸出中 (預設值為 bin/Debug/projectname.dacpac)。

您可以使用 dotnet build 命令,從命令列建置 SQL 資料庫專案。

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

組建輸出包含任何錯誤或警告,以及發生錯誤或警告的特定檔案和行號。 成功建置時,會建立組建成品 (.dacpac 檔案),其位置會包含在組建輸出中 (預設值為 bin/Debug/projectname.dacpac)。

步驟 4:將專案簽入原始檔控制

我們會將專案初始化為 Git 存放庫,並將專案檔提交至原始檔控制。 必須執行此步驟,才能讓專案與他人共用,並用於持續部署管線。

  1. 從 Visual Studio 中的 [Git] 功能表,選取 [建立 Git 存放庫]

    Visual Studio 的 Git 功能表中「建立 Git 存放庫」選項的螢幕擷取畫面。

  2. 在 [建立 Git 存放庫] 對話方塊的 [推送至新的遠端] 區段底下,選擇 [GitHub]

  3. 在 [建立 Git 存放庫] 對話方塊的 [建立新的 GitHub 存放庫] 區段中,輸入您要建立的存放庫名稱。 (如果您尚未登入 GitHub 帳戶,您也可以從此畫面執行此動作。)

    Visual Studio 的 [建立 Git 存放庫] 對話方塊螢幕擷取畫面,[GitHub] 選項醒目顯示。

    在 [初始化本機 Git 存放庫] 底下,您應使用 [.gitignore 範本] 選項來指定您想要 Git 忽略的任何刻意未追蹤檔案。 若要深入了解 .gitignore,請參閱忽略檔案。 若要深入了解授權,請參閱授權存放庫

  4. 登入並輸入存放庫資訊之後,請選取 [建立並推送] 按鈕,以建立您的存放庫並新增您的應用程式。

在 [方案總管] 中,以滑鼠右鍵按一下專案節點,然後選取 [發佈...]

[發佈] 對話方塊隨即開啟,您可以在其中建立 [目標資料庫連線]。 如果您沒有用於部署的現有 SQL 執行個體,則 LocalDB ((localdb)\MSSQLLocalDB) 會隨 Visual Studio 一起安裝,可用於測試和開發。

指定資料庫名稱,然後選取 [發佈],將專案部署至目標資料庫,或 [產生指令碼] 以產生指令碼,以便在執行之前檢閱。

您可以初始化本機存放庫,並從 VS Code 或 Azure Data Studio 直接發佈到 GitHub。 此動作會在 GitHub 帳戶上建立新的存放庫,並在單一步驟中將本機程式碼變更推送至遠端存放庫。

使用 VS Code 或 Azure Data Studio 中原始檔控制檢視中的 [發佈至 GitHub] 按鈕。 然後,系統會提示您指定存放庫的名稱和描述,以及是否將其設為公用或私人。

Visual Studio 的 [建立 Git 存放庫] 對話方塊螢幕擷取畫面,[GitHub] 選項醒目顯示。

或者,您也可以遵循在 GitHub 上建立空白存放庫時提供的步驟,初始化本機存放庫,並將其推送至 GitHub。

在專案目錄中初始化新的 Git 存放庫,並將專案檔提交至原始檔控制。

git init
git add .
git commit -m "Initial commit"

在 GitHub 上建立新的存放庫,並將本機存放庫推送至遠端存放庫。

git remote add origin <repository-url>
git push -u origin main

步驟 5:將專案建置步驟新增至持續部署管線

SQL 專案是由 .NET 程式庫提供支援,因此會使用 dotnet build 命令來建置專案。 此命令是最基本的持續整合和持續部署 (CI/CD) 管線的標誌。 建置步驟可以新增至我們在 GitHub Actions 中建立的持續部署管線。

  1. 在存放庫根目錄中建立名為 .github/workflows 的新目錄。 此目錄將會包含定義持續部署管線的工作流程檔案。

  2. .github/workflows 目錄中,建立名稱為 sqlproj-sample.yml 的新檔案。

  3. 將下列內容新增至 sqlproj-sample.yml 檔案,編輯專案名稱,以符合專案的名稱和路徑:

    name: sqlproj-sample
    
    on:
      push:
        branches: [ "main" ]
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v4
    
        - name: Setup .NET
          uses: actions/setup-dotnet@v4
          with:
            dotnet-version: 8.0.x
    
        - name: Build
          run: dotnet build MyDatabaseProject.sqlproj
    
  4. 將工作流程檔案提交至存放庫,並將變更推送至遠端存放庫。

  5. 在 GitHub.com 上,瀏覽至存放庫的主頁面。 在您的存放庫名稱下,按下 [動作]。 在左側邊欄中,選取您剛建立的工作流程。 當您將工作流程檔案推送至存放庫時,工作流程最近的執行應當會出現在工作流程執行清單中。

如需建立第一個 GitHub Actions 工作流程的基本概念的詳細資訊,請參閱 GitHub Actions 快速入門

步驟 6:將 .dacpac 部署步驟新增至持續部署管線

.dacpac 檔案中資料庫結構描述的編譯模型可以使用 SqlPackage 命令列工具或其他部署工具,部署到目標資料庫。 部署程序會決定更新目標資料庫的必要步驟,以符合 .dacpac 中所定義的結構描述,視需要根據資料庫中已經存在的物件來建立或改變物件。 例如,若要根據連接字串將 .dacpac 檔案部署到目標資料庫:

sqlpackage /Action:Publish /SourceFile:bin/Debug/MyDatabaseProject.dacpac /TargetConnectionString:{yourconnectionstring}

部署前 DacFx 來源和目標比較程序的螢幕擷取畫面。

部署程序具有等冪性,即可以多次執行,而不會造成問題。 我們建立的管線會在每次將變更簽入存放庫的 main 分支時,建置和部署 SQL 專案。 除了直接在我們的部署管線中執行 SqlPackage 命令,我們可以使用部署工作來將命令抽象化並提供其他功能,例如記錄、錯誤處理和工作組態。 部署工作 GitHub sql-action 可以新增至 GitHub Actions 中的持續部署管線。

注意

從自動化環境執行部署需要設定資料庫和環境,讓部署可以觸達資料庫並進行驗證。 在 VM 中的 Azure SQL 資料庫或 SQL Server 中,這可能需要設定防火牆規則,以允許自動化環境連線到資料庫,並提供具有必要認證的連接字串。 GitHub sql-action 文件中提供指引。

  1. 開啟 .github/workflows 目錄中的 sqlproj-sample.yml 檔案。

  2. 在建置步驟之後,將下列步驟新增至 sqlproj-sample.yml 檔案:

    - name: Deploy
      uses: azure/sql-action@v2
      with:
        connection-string: ${{ secrets.SQL_CONNECTION_STRING }}
        action: 'publish'
        path: 'bin/Debug/MyDatabaseProject.dacpac'
    
  3. 提交變更之前,請將祕密新增至包含目標資料庫連接字串的存放庫。 在 GitHub.com 上的存放庫中,瀏覽至 [設定],然後至 [祕密]。 選取 [新增存放庫祕密],並將名為 SQL_CONNECTION_STRING 且值為連接字串的祕密新增至目標資料庫。

    GitHub 存放庫設定的螢幕擷取畫面,其中已醒目提示 [新增存放庫祕密] 按鈕。

  4. 將變更從 sqlproj-sample.yml 提交至存放庫,並將變更推送至遠端存放庫。

  5. 瀏覽回 GitHub.com 上的工作流程歷程記錄,然後選取工作流程的最新執行。 部署步驟應該會在工作流程執行的步驟清單中顯示,而工作流程會傳回成功碼。

  6. 透過連線至目標資料庫並檢查專案中的物件是否存在於資料庫中,以驗證部署。

透過在工作流程中建立環境關聯性,並在執行部署之前要求核准,以進一步保護 GitHub 部署。 如需有關環境保護和祕密保護的詳細資訊,請參閱 Github Actions 文件

取得協助