搭配 Azure DevOps Server 使用 Azure SQL 資料庫
Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019
使用本文中的步驟來設定 Azure DevOps Server 與 Azure SQL 資料庫。 相較於使用內部部署的 SQL 伺服器,此架構需要一些額外的步驟。
需求
- Azure SQL 資料庫 只能與 Azure DevOps Server 2019 和更新版本搭配使用。
- 您必須在 Azure VM 上安裝 Azure DevOps Server。
- VM 必須啟用系統受控識別,才能用來向 Azure SQL 資料庫進行驗證。
- VM 必須加入網域,但不能加入工作組。
- Azure SQL 資料庫必須是單一資料庫。 Azure DevOps Server 2022 和更新版本支援受控實例和彈性集區。
支援所有一般用途和進階 SKU。 也支援標準 SKU S3 和更新版本。 不支援基本 SKU 和標準 SKU S2 和以下版本。 使用 Azure SQL 資料庫 的 Azure DevOps Server 組態不支援舊版 SQL Server Reporting Services 與 SQL Server Analysis Services 報告功能。 相反地,您可以使用 Azure DevOps Analytics。
當您使用 Azure SQL 資料庫 時,僅支援從 Team Foundation Server 2015 和更新版本升級至 Azure DevOps Server。 Azure SQL 資料庫 不支援加密的預存程式。
設定 Azure SQL Database
在您的虛擬機上設定受控識別。 我們目前僅支持系統管理的身分識別。
您可以使用所有標準機制來執行組態,包括:
若要設定新的 Azure DevOps Server 實例,請建立兩個 Azure SQL 資料庫:
AzureDevOps_Configuration
AzureDevOps_DefaultCollection
注意
如果您使用現有的資料庫,則可以略過此步驟:
- 升級新版本的 Azure DevOps Server。
- 將 Azure DevOps Server 的最新實例遷移至 Azure SQL 資料庫。
設定 Azure SQL 資料庫 伺服器的 Azure Active Directory 驗證。 讓自己成為伺服器上的 Active Directory 系統管理員。 您需要資料庫的系統管理員許可權,才能完成其餘的設定步驟。 您稍後可以變更此許可權。
如果您使用多部伺服器,請啟用您的受控識別或身分識別,以登入您的 Azure SQL 資料庫,並提供適當的許可權。 使用 SQL Server Management Studio 連線到資料庫伺服器。 使用具Active Directory 驗證的 Azure Active Directory 使用者進行連線。 如果您在 SQL 驗證下登入 Azure SQL 資料庫,則無法操作 Azure Active Directory 使用者。
a. 在
main
資料庫上執行下列 T-SQL 命令:CREATE USER [VMName] FROM EXTERNAL PROVIDER ALTER ROLE [dbmanager] ADD MEMBER [VMName]
請用您要新增至資料庫的虛擬機器名稱取代 VMName。
b. 在組態和所有集合資料庫上執行下列 T-SQL 命令:
CREATE USER [VMName] FROM EXTERNAL PROVIDER ALTER ROLE [db_owner] ADD MEMBER [VMName] ALTER USER [VMName] WITH DEFAULT_SCHEMA=dbo
設定 Azure DevOps Server
返回 Azure DevOps Server 組態精靈。 如果您設定新的實例,請選取 [這是新的 Azure DevOps Server 部署]。 如果您升級或移轉並在資料庫中有現有的數據,請選取 [我有現有的資料庫可供此 Azure DevOps Server 部署使用]。
當您進入組態精靈中的 [資料庫] 頁面時,請指定 Azure SQL 資料庫 伺服器實例。 一般而言,伺服器實例的格式 為 SQLInstanceName.database.windows.net。
您現在有在 Azure SQL 資料庫 上執行的 Azure DevOps Server 實例。
從內部部署 SSMS 連線到 Azure SQL 資料庫
請執行下列步驟,從內部部署 SSMS 連線到 Azure SQL 資料庫:
透過 SQL Server Management Studio SSMS 從執行於相同 VNET 內、且具有私人端點之 VM,將資料從 SQL 導出到 Blob 儲存體或檔案共用。
您可以使用 SQL Server Management Studio 匯出數據層應用程式精靈,將 Azure SQL 資料庫導出至 .bacpac 檔案。 您可以將 .bacpac 檔案儲存在 Azure Blob 記憶體或檔案共用中。
從 SSMS>中,以滑鼠右鍵單擊邏輯 SQL Server 上的 SQL Database,在>工作中選擇匯出資料層應用程式 精靈。
選取 下一步。
選取要儲存 BACPAC 檔案的位置。
選取 [關閉]。
DAC 套件位於這裡:C:\Users\{sample-user-name}\OneDrive - Microsoft\Documents\SQL Server Management Studio\DAC Packages
。
從 Azure DevOps Server 2022 連線到 Azure SQL Database
從 Azure DevOps Server 2022(內部部署)連線至 Azure SQL Database 涉及設定存取、確保連線通暢,以及使用適當的憑證。 請執行下列步驟,從 Azure DevOps Server 2022 連線 Azure SQL Database。
先決條件
類別 | 需求 |
---|---|
防火牆規則 | Azure SQL Database 防火牆規則允許來自裝載 Azure DevOps Server 之 IP 位址或子網的輸入連線。 若要這樣做,請移至:Azure 入口網站>Azure SQL Database>設定>防火牆和虛擬網路> 新增規則,以允許從 Azure DevOps Server 的公用 IP 位址或子網存取。 |
工具 | - Azure SQL Database 已在 Azure 中部署並可供存取。 伺服器名稱、資料庫名稱和驗證方法的記錄。 - 在內部部署環境中執行的 Azure DevOps Server 2022。 - SSMS 安裝在安裝 Azure DevOps Server 的相同電腦上。 |
連線到 Azure SQL Database
取得 Azure SQL Database 連線詳細數據:
- 伺服器名稱:
<your-server-name>.database.windows.net
- 資料庫名稱:
<your-database-name>
- 驗證方法:SQL Server 驗證(使用者名稱/密碼)或Microsoft Entra ID 驗證。
- 伺服器名稱:
使用 SQL Server Management Studio (SSMS) 連線: 。 在安裝 Azure DevOps Server 的電腦上開啟 SQL Server Management Studio。 b. 連線到 Azure SQL Database:c. 啟動SSMS。 d. 在 [連線到伺服器] 視窗中:
- 輸入伺服器名稱:
<your-server-name>.database.windows.net
- 選擇 [驗證:SQL Server 驗證]。
- 輸入您的使用者名稱和密碼。
- 選取 [Connect]。 連線之後,Azure SQL Database 會列在 SSMS 中的 [物件總管] 底下。
- 輸入伺服器名稱:
測試連線能力: 在 SSMS 中執行查詢或命令,以確認連線能力:
SELECT @@VERSION;
此查詢會傳回 Azure SQL Database 的 SQL Server 版本,確認連線成功。
在 Azure DevOps Server 中使用連線: 驗證 SSMS 的連線之後,您可以在 Azure DevOps Server 內針對各種工作使用此連線,例如:
- 自動化部署:在 Azure DevOps Server 中設定發行管線以部署資料庫變更。
- 數據遷移:使用與 Azure DevOps Server 整合的 SQL 腳本或數據工具。
- 持續整合:將資料庫變更整合到 CI/CD 管線中。
提示
- 安全: 考慮使用 Microsoft Entra 識別碼,以取得更安全的存取權。
- 管理認證: 安全地儲存認證,並避免在腳本或組態中硬式編碼認證。
- 監視器: 監視資料庫連線和使用方式,以確保安全性和效能。
從內部部署的 Azure DevOps Server 2022 連接至 Azure SQL Database,以簡化資料庫管理並整合到您的開發和部署流程中。 根據貴組織的原則和需求調整組態和安全性措施。
在 Azure DevOps Server 2022 中使用您的 Azure SQL Database 連線
準備 Azure DevOps Server:
。 請確定您已在內部部署環境中安裝及設定 Azure DevOps Server 2022。</
b. 要存取 Azure DevOps Server,必須具備建立和管理管線的適當許可權。設定 Azure DevOps 專案和存放庫(如果尚未完成):
。 建立新的或使用現有的 Azure DevOps 專案。
b. 設定 Git 或 TFVC 存放庫來儲存您的管線定義和腳本。建立管線:
a. 移至您的 Azure DevOps 專案。
b. 選取 管線>管線>新增管線。
c. 根據您的需求選取適當的管線範本。 針對 Azure SQL Database,您可以從空白作業開始,或選擇符合部署需求的範本(例如 Azure Pipeline)。
d. 編輯管線 YAML 檔案,或使用傳統編輯器來定義管線階段和工作。新增工作以部署至 Azure SQL Database:
任務:SQL Server 資料庫變更部署: 使用
SqlAzureDacpacDeployment
任務將變更部署至 Azure SQL Database。 範例 YAML 代碼段:steps: - task: SqlAzureDacpacDeployment@1 inputs: azureSubscription: 'YourServiceConnectionName' # Use your Azure SQL Database service connection serverName: '<your-server-name>.database.windows.net' databaseName: '<your-database-name>' deployType: 'DacpacTask' authenticationType: 'server' sqlUsername: '$(sqlUsername)' sqlPassword: '$(sqlPassword)'
以適當的值或變數取代
<your-server-name>
、<your-database-name>
、$(sqlUsername)
和$(sqlPassword)
。工作:Azure SQL 查詢: 使用
AzureSqlQuery
工作對 Azure SQL Database 執行 SQL 查詢。 範例 YAML 代碼段:steps: - task: AzureSqlQuery@1 inputs: azureSubscription: 'YourServiceConnectionName' # Use your Azure SQL Database service connection serverName: '<your-server-name>.database.windows.net' databaseName: '<your-database-name>' sqlUsername: '$(sqlUsername)' sqlPassword: '$(sqlPassword)' sqlQuery: 'SELECT * FROM TableName'
安全地管理認證: 使用 Azure DevOps 變數或 Azure Key Vault 整合來管理 SQL Server 認證等敏感性資訊(
sqlUsername
和sqlPassword
)。觸發和執行管線:
- 儲存並提交管線變更。
- 根據部署策略手動觸發管道或設定觸發條件(例如,在程式碼提交、排程上)。
監視管線執行:
- 監視 Azure DevOps 中的管線執行,以確保 Azure SQL Database 的部署成功。
- 檢查記錄和輸出,以解決部署期間的任何問題。
提示
- 與發行管線整合: 整合組建管線與發行管線,以取得更複雜的部署案例和核准。
- 進行累加資料庫變更: 使用 SQL Server Data Tools (SSDT) 之類的工具或移轉來管理資料庫架構的累加變更。
- 使用版本控制: 在版本控制下保留 SQL 腳本和資料庫變更,以追蹤變更並確保重現性。
根據您的特定部署需求和組織需求調整組態和工作。
建立 SQL Server 備份
使用 Azure DevOps Server 管理控制台建立 Azure DevOps Server 2022 的 SQL Server 備份牽涉到設定備份設定和排程定期備份。 執行下列步驟來建立 SQL Server 備份。
備份的必要條件
類別 | 需求 |
---|---|
訪問 | 管理員 存取權限到 Azure DevOps Server 安裝所在的伺服器。 |
權限 | 設定備份和存取 SQL Server Management Studio 的許可權。 |
建立備份
在安裝 Azure DevOps Server 的伺服器上啟動 Azure DevOps Server 管理控制台,然後選取 [應用層>排程備份>建立排程備份。
輸入網路備份路徑,然後選取 [[下一步]。
請選擇任何所需的電子郵件警示,然後選擇 下一步。
根據您的需求選擇備份排程,然後選取 [下一步]。
確認組態設定,然後選取 驗證。
備份精靈會驗證備份路徑是否存在,而且是網路路徑。
錯誤排除
如果整備檢查失敗,請參閱下列資訊以取得疑難解答的協助。
錯誤:服務帳戶存取
錯誤訊息:TF401009: The Azure DevOps service account NT AUTHORITY\LOCAL SERVICE cannot access network shares. Change to an account that can access the backup path.
當服務帳戶是 NT AUTHORITY\LOCAL SERVICE 時,就會發生此錯誤。
解決方案:
- 建立具有必要存取許可權的本機使用者。
- 在 Azure DevOps Server 管理控制台中,移至 [應用層] 畫面,然後選取 [變更帳戶]。
- 將服務帳戶變更為新建立的本機用戶帳戶。
- 重做備份流程,以成功建立備份並重新執行整備檢查。
成功的備份設定:
排程備份記錄:
管理主控台排程備份:
錯誤:記錄檔
範例記錄檔位置:C:\ProgramData\Microsoft\Azure DevOps\Server Configuration\Logs\TFS_Scheduled Backups_0627_192409.log
範例記錄檔錯誤訊息:[7/1/2024 7:28:37 AM] [Error]``Exception Message: The backup of the file or filegroup "LeadingKey" is not permitted because it is not online. Container state: "Offline" (7). Restore status: 0. BACKUP can be performed by using the FILEGROUP or FILE clauses to restrict the selection to include only online data.``BACKUP DATABASE is terminating abnormally. (type SqlException)
解決方案:
在執行備份之前,請確定所有檔案群組都在在線。
LeadingKeyOffline 範例:
使用 SQL 查詢來測試備份程式,以找出並解決特定檔案群組的任何問題。